offline_sync_kit 1.1.0 copy "offline_sync_kit: ^1.1.0" to clipboard
offline_sync_kit: ^1.1.0 copied to clipboard

Flutter package for offline data storage and synchronization with remote APIs.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:offline_sync_kit/offline_sync_kit.dart';
import 'models/todo.dart';
import 'models/encryption_manager.dart';
import 'screens/home_screen.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize encryption manager
  await EncryptionManager().initialize();

  // Initialize sync manager
  await initSyncManager();

  runApp(const MyApp());
}

Future<void> initSyncManager() async {
  // Put your API address here in a real application
  const baseUrl = 'https://jsonplaceholder.typicode.com';

  final storageService = StorageServiceImpl();
  await storageService.initialize();

  // Register model factory
  (storageService).registerModelDeserializer<Todo>(
    'todo',
    (json) => Todo.fromJson(json),
  );

  // Enhanced security and performance options with SyncOptions
  final syncOptions = SyncOptions(
    syncInterval: const Duration(minutes: 15),
    useDeltaSync: true, // Enable delta synchronization
    conflictStrategy: ConflictResolutionStrategy.lastUpdateWins,
    batchSize: 20, // Higher value for batch operations
    autoSync: true,
    bidirectionalSync: true,
  );

  // Get encryption status from the manager
  final encryptionManager = EncryptionManager();
  final isEncryptionEnabled = encryptionManager.isEncryptionEnabled;

  // Initialize sync manager with optional encryption
  await OfflineSyncManager.initialize(
    baseUrl: baseUrl,
    storageService: storageService,
    syncOptions: syncOptions,
    enableEncryption: isEncryptionEnabled, // Use value from EncryptionManager
    encryptionKey:
        isEncryptionEnabled
            ? 'secure-key-here'
            : null, // Only provide key if enabled
  );

  // Register Todo model with OfflineSyncManager
  OfflineSyncManager.instance.registerModelFactory<Todo>(
    'todo',
    (json) => Todo.fromJson(json),
  );
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Offline Sync Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const HomeScreen(),
    );
  }
}
7
likes
150
points
168
downloads

Publisher

verified publishercanarslan.me

Weekly Downloads

Flutter package for offline data storage and synchronization with remote APIs.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

connectivity_plus, crypto, encrypt, equatable, flutter, http, intl, isar, isar_flutter_libs, path, path_provider, rxdart, sqflite, uuid

More

Packages that depend on offline_sync_kit