Offline-First-Sync mit Flutter + Firebase
Firestore ist standardmäßig Offline-First
Schreibvorgänge werden in eine Warteschlange eingereiht
hasPendingWrites , das in den Metadaten des Snapshots verfügbar ist:
Konflikte auflösen
FieldValue.increment() (kommutativ, also konfliktfrei); für alles andere entscheidet ein updatedAt mit FieldValue.serverTimestamp() zum Zeitpunkt der Synchronisierung.
- ›
Zähler → increment() - ›
Server-Zeitstempel → serverTimestamp() - ›
Komplexe Geschäftsregel → eine Transaktion in einer Cloud Function
Offline testen
firestore.disableNetwork() erzwingt den Offline-Modus in einem Integrationstest, enableNetwork() spielt anschließend die Warteschlange erneut ab. Der Firestore-Offline-Leitfaden dokumentiert jede API.
Offline-First bedeutet nicht, einen Netzwerkausfall zu behandeln. Es bedeutet, die App so zu gestalten, als würde das Netzwerk nicht existieren , und die Synchronisierung zu einem bloßen Implementierungsdetail werden zu lassen.