easy_sync 0.2.2 copy "easy_sync: ^0.2.2" to clipboard
easy_sync: ^0.2.2 copied to clipboard

Flutter background sync and offline-first sync orchestration with Workmanager, retry, preconditions, rate limiting, and circuit breaker controls.

example/main.dart

import 'package:flutter/material.dart';

import 'package:easy_sync/easy_sync.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final easySync = await EasySync.setup(
    tasks: <SyncTask>[_SampleSyncTask()],
    appOpenSync: true,
    background: EasySyncBackgroundConfig.enabled(
      frequency: const Duration(hours: 1),
    ),
    taskTimeout: const Duration(seconds: 20),
    isolateTaskFailures: true,
  );

  runApp(_ExampleApp(easySync: easySync));
}

class _ExampleApp extends StatelessWidget {
  const _ExampleApp({required this.easySync});

  final EasySync easySync;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('easy_sync example')),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              await easySync.runAll(
                metadata: const <String, Object?>{
                  'source': 'manual_button',
                  'hasNetwork': true,
                },
              );
            },
            child: const Text('Run Manual Sync'),
          ),
        ),
      ),
    );
  }
}

class _SampleSyncTask implements SyncTask {
  @override
  String get key => 'sample-task';

  @override
  SyncPolicy get policy =>
      const SyncPolicy(appOpen: true, manual: true, background: true);

  @override
  List<SyncPrecondition> get preconditions => <SyncPrecondition>[
    RequiresNetworkPrecondition(
      checker: (context) async => context.value<bool>('hasNetwork') ?? false,
    ),
  ];

  @override
  SyncTaskHandler get handler => _SampleSyncTaskHandler();
}

class _SampleSyncTaskHandler implements SyncTaskHandler {
  @override
  Future<SyncResult> execute(SyncContext context) async {
    return SyncResult.success();
  }
}
0
likes
160
points
46
downloads

Documentation

Documentation
API reference

Publisher

verified publisherdevsloom.ca

Weekly Downloads

Flutter background sync and offline-first sync orchestration with Workmanager, retry, preconditions, rate limiting, and circuit breaker controls.

Repository (GitHub)
View/report issues

Topics

#flutter #synchronization #background-tasks #offline-first #workmanager

License

MIT (license)

Dependencies

flutter, meta, workmanager

More

Packages that depend on easy_sync