main.dart 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import 'package:chicken_farm/core/config/app_config.dart';
  2. import 'package:chicken_farm/core/utils/loading.dart';
  3. import 'package:chicken_farm/routes/route_provider.dart';
  4. import 'package:chicken_farm/core/services/sync_service.dart';
  5. import 'package:chicken_farm/core/services/connectivity_service.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:flutter_riverpod/flutter_riverpod.dart';
  8. void main() async {
  9. WidgetsFlutterBinding.ensureInitialized();
  10. await AppConfig.init(); // 初始化配置
  11. final container = ProviderContainer();
  12. // 初始化LoadingUtil
  13. LoadingUtil.init(container);
  14. // 初始化同步服务
  15. final syncService = SyncService();
  16. syncService.startAutoSync();
  17. runApp(
  18. ProviderScope(
  19. child: MyApp(),
  20. ),
  21. );
  22. }
  23. class MyApp extends ConsumerWidget {
  24. const MyApp({super.key});
  25. @override
  26. Widget build(BuildContext context, WidgetRef ref) {
  27. final goRouter = ref.watch(goRouterProvider);
  28. // 监听网络状态变化,如果变为连接状态则尝试同步
  29. ref.listen(isConnectedProvider, (_, snapshot) {
  30. snapshot.when(
  31. data: (data) {
  32. if (data == true) {
  33. // 网络恢复,尝试同步离线数据
  34. final syncService = SyncService();
  35. syncService.syncPendingOperations();
  36. }
  37. },
  38. loading: () => null,
  39. error: (error, stackTrace) => null,
  40. );
  41. });
  42. return MaterialApp.router(
  43. title: 'Chicken Farm',
  44. debugShowCheckedModeBanner: false,
  45. theme: ThemeData(
  46. useMaterial3: true,
  47. colorScheme: ColorScheme.fromSeed(seedColor: Colors.green),
  48. ),
  49. routerConfig: goRouter,
  50. );
  51. }
  52. }