Lección 9 de 16 · Lectura y práctica
SharedPreferences y SQLite con sqflite
Lección práctica para aplicar SharedPreferences y SQLite con sqflite dentro de Desarrollo de Apps Móviles con Flutter - Nivel Intermedio, con criterios de decisión, ejemplo guiado, ejercicio y checklist de salida.
Del concepto a la práctica
Taller de esta lección
La frontera práctica es el tipo de dato: SharedPreferences sirve para valores simples y pequeños; SQLite sirve para conjuntos de registros que deben consultarse, actualizarse y relacionarse. Guardar toda una lista de tareas serializada como una preferencia dificulta búsquedas y actualizaciones parciales.
Ejemplo resuelto
Guarda filter=pendientes en preferencias. En SQLite, conserva filas t1, Comprar pan, 0 y t2, Pagar factura, 1, donde 0 y 1 representan falso y verdadero. La consulta de pendientes filtra completed = 0 y devuelve solo t1.
Espera la escritura asíncrona de la preferencia y prueba un reinicio completo de la app, no solo la reconstrucción de una pantalla. Las preferencias no son un almacén para información crítica. En SQLite usa una columna id TEXT PRIMARY KEY y completed INTEGER CHECK (completed IN (0,1)). Actualiza con parámetros: db.update("tasks", {"completed": 1}, where: "id = ?", whereArgs: ["t1"]). Para un orden verificable, consulta con orderBy: "id"; sin orden explícito, compara conjuntos de IDs.
Pruébalo
Persiste el filtro
pendientescomo texto.Inserta las dos filas indicadas en una tabla de tareas.
Consulta por
completed = 0.Actualiza
t1a1y repite la consulta.
Error frecuente: guardar booleanos con significados mezclados. Corrígelo documentando una convención única y aplicándola al leer y escribir.
Comprueba tu resultado
Antes de actualizar, la consulta debe devolver un registro: t1. Después debe devolver cero registros, mientras la consulta completed = 1 devuelve t1 y t2. El filtro guardado debe seguir siendo pendientes tras reiniciar la pantalla.

Mapa de prácticaUna clave conecta cada pedido con su cliente. INNER JOIN devuelve las coincidencias y puede producir varias filas por cliente. LEFT JOIN conserva también los clientes sin pedido y representa los campos ausentes con NULL.
Ver la infografía en tamaño completo ↗Fuentes para profundizar
Sigue con Desarrollo de Apps Móviles con Flutter - Nivel Intermedio
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.