vb_app.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import 'package:chicken_farm/core/services/connectivity_service.dart';
  2. import 'package:chicken_farm/core/services/offline_storage_service.dart';
  3. import 'package:chicken_farm/routes/app_routes.dart';
  4. import 'package:chicken_farm/routes/route_provider.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:flutter_riverpod/flutter_riverpod.dart';
  7. import 'package:go_router/go_router.dart';
  8. class VberApp extends ConsumerWidget {
  9. const VberApp({super.key});
  10. @override
  11. Widget build(BuildContext context, WidgetRef ref) {
  12. final goRouter = ref.watch(goRouterProvider);
  13. // 只在应用启动时检查是否需要上传数据
  14. WidgetsBinding.instance.addPostFrameCallback((_) {
  15. _checkAndNavigateToUpload(goRouter);
  16. });
  17. return MaterialApp.router(
  18. title: '养殖场管理系统',
  19. debugShowCheckedModeBanner: false,
  20. theme: ThemeData(
  21. useMaterial3: true,
  22. colorScheme: ColorScheme.fromSeed(seedColor: Colors.green),
  23. ),
  24. routerConfig: goRouter,
  25. );
  26. }
  27. // 检查是否有待上传数据,如果有则导航到上传页面
  28. Future<void> _checkAndNavigateToUpload(GoRouter goRouter) async {
  29. final container = ProviderContainer();
  30. final isConnected = await container.read(isConnectedProvider.future);
  31. if (isConnected) {
  32. final storageService = OfflineStorageService();
  33. final pendingOperations = await storageService.getPendingOperations();
  34. if (pendingOperations.isNotEmpty) {
  35. // 使用GoRouter进行导航
  36. goRouter.pushNamed(AppRouteNames.upload);
  37. }
  38. }
  39. }
  40. }