Sync offline-first en Flutter + Firebase
Firestore es offline-first por defecto
Las escrituras se ponen en cola
hasPendingWrites expuesto en los metadatos del snapshot:
Resolver los conflictos
FieldValue.increment() (conmutativo, por lo tanto sin conflicto); para el resto, un updatedAt con FieldValue.serverTimestamp() decide en el momento de la sincronización.
- ›
contadores → increment() - ›
marca de tiempo del servidor → serverTimestamp() - ›
regla de negocio compleja → una transacción en una Cloud Function
Probar la desconexión
firestore.disableNetwork() fuerza el modo desconectado en una prueba de integración, y luego enableNetwork() reproduce la cola. La guía offline de Firestore documenta cada API.
El offline-first no consiste en gestionar un fallo de red. Consiste en concebir la app como si la red no existiera , y dejar que la sincronización sea solo un detalle de implementación.