offline_sync_outbox 1.0.1
offline_sync_outbox: ^1.0.1 copied to clipboard
A lightweight offline-first FIFO sync queue with durable storage, connectivity triggers, and configurable retry policies for Dart and Flutter.
example/offline_sync_outbox_example.dart
import 'dart:io';
import 'package:offline_sync_outbox/offline_sync_outbox.dart';
Future<void> main() async {
final directory = await Directory.systemTemp.createTemp('offline_sync_demo_');
final queuePath =
'${directory.path}${Platform.pathSeparator}offline-queue.json';
final connectivity = ManualSyncConnectivity(isOnline: false);
final manager = OfflineSyncManager(
store: JsonFileSyncStore(queuePath),
connectivity: connectivity,
autoSync: false,
processor: (operation) async {
stdout.writeln(
'Uploading ${operation.action}: ${operation.payload}',
);
return const SyncResult.success();
},
);
await manager.initialize();
await manager.enqueue(
action: 'create_note',
payload: <String, Object?>{'text': 'Written while offline'},
);
final offlineReport = await manager.synchronize();
stdout.writeln('Pending while offline: ${offlineReport.pending}');
connectivity.setOnline(true);
final onlineReport = await manager.synchronize();
stdout.writeln('Uploaded: ${onlineReport.succeeded}');
await manager.dispose();
await directory.delete(recursive: true);
}