flutter_offline_data_sync 0.0.3 copy "flutter_offline_data_sync: ^0.0.3" to clipboard
flutter_offline_data_sync: ^0.0.3 copied to clipboard

A Flutter package for offline data synchronization with local storage and automatic retry.

Flutter Offline Sync #

A Flutter package for offline data synchronization. This package enables seamless data sync between local storage and a remote server, ensuring smooth functionality even in offline mode.

Features #

  • Automatic sync when the internet is available
  • Local storage using Hive
  • Background data synchronization
  • Connectivity-aware sync mechanism

Installation #

Add the package to your pubspec.yaml:

dependencies:
  flutter:
    sdk: flutter
  connectivity_plus: ^5.0.2
  hive: ^2.2.3
  hive_flutter: ^1.1.0

Run:

flutter pub get

Usage #

1. Initialize Sync Manager #

In your main.dart, initialize the sync manager:

import 'package:flutter/material.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter_offline_data_sync/sync_manager.dart';
import 'package:hive_flutter/hive_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Hive.initFlutter();
  final syncManager = SyncManager();
  await syncManager.init();

  Connectivity().onConnectivityChanged.listen((event) {
    if (event != ConnectivityResult.none) {
      syncManager.syncData();
    }
  });

  runApp(MyApp());
}

2. Implement SyncManager #

Create a SyncManager class to handle offline data storage and sync:

import 'package:hive/hive.dart';
import 'package:connectivity_plus/connectivity_plus.dart';

/// Manages offline data synchronization and local storage.
class SyncManager {
  late Box _box;

  /// Initializes the sync manager by opening the Hive box.
  Future<void> init() async {
    _box = await Hive.openBox('offline_data');
  }

  /// Saves data locally with a given [key] and [value].
  void saveData(String key, dynamic value) {
    _box.put(key, value);
  }

  /// Synchronizes local data with the remote server when online.
  Future<void> syncData() async {
    if (await Connectivity().checkConnectivity() != ConnectivityResult.none) {
      var offlineData = _box.toMap();
      // Send data to the server
      print("Syncing data: \$offlineData");
      _box.clear();
    }
  }
}

3. Store and Sync Data #

Save data locally when offline and sync when online:

final syncManager = SyncManager();
/// Stores user data locally.
syncManager.saveData('user', {'name': 'John Doe', 'age': 25});

Running Tests #

To run tests, execute:

flutter test

Example Project #

Check out the /example folder for a complete working example.

Contributing #

Contributions are welcome! Feel free to open an issue or submit a pull request.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

8
likes
140
points
46
downloads

Publisher

verified publisheryashil.linkpc.net

Weekly Downloads

A Flutter package for offline data synchronization with local storage and automatic retry.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

connectivity_plus, dio, flutter, hive, hive_flutter, path_provider, uuid

More

Packages that depend on flutter_offline_data_sync