import 'package:chicken_farm/components/vb_app_bar.dart'; import 'package:chicken_farm/core/config/app_config.dart'; import 'package:chicken_farm/core/services/offline_storage_service.dart'; import 'package:chicken_farm/core/utils/logger.dart'; import 'package:chicken_farm/core/utils/service_checker.dart'; import 'package:chicken_farm/core/utils/toast.dart'; import 'package:chicken_farm/pages/home/menu_buttons.dart'; import 'package:chicken_farm/routes/app_routes.dart'; import 'package:chicken_farm/stores/auth_store.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'profile.dart'; class HomePage extends ConsumerStatefulWidget { const HomePage({super.key}); @override ConsumerState createState() => _HomePageState(); } class _HomePageState extends ConsumerState { int _selectedIndex = 0; bool _needCheck = true; static const List _titles = ['功能菜单', '个人中心']; @override initState() { super.initState(); _checkAndNavigateToUpload(); } @override Widget build(BuildContext context) { final authState = ref.watch(authStoreProvider); return Scaffold( appBar: VberAppBar( title: _titles[_selectedIndex], showLeftButton: false, // 主页不显示返回按钮 ), body: _buildBody(_selectedIndex, authState), bottomNavigationBar: BottomNavigationBar( type: BottomNavigationBarType.fixed, currentIndex: _selectedIndex, onTap: (index) { setState(() { _selectedIndex = index; }); }, items: const [ BottomNavigationBarItem( icon: Icon(Icons.home_outlined), activeIcon: Icon(Icons.home), label: '功能菜单', ), BottomNavigationBarItem( icon: Icon(Icons.person_outline), activeIcon: Icon(Icons.person), label: '个人中心', ), ], ), ); } Widget _buildBody(int selectedIndex, AuthInfo authState) { switch (selectedIndex) { case 0: return const Center(child: MenuButtons()); case 1: return const ProfilePage(); default: return const Center(child: Text('页面不存在')); } } // 检查是否有待上传数据,如果有则导航到上传页面 Future _checkAndNavigateToUpload() async { if (!_needCheck || AppConfig.isOffline) { return; } _needCheck = false; final isConnected = await ServiceChecker().checkService(); if (isConnected) { logger.i('已连接系统,开始检查待上传数据...'); final storageService = OfflineStorageService(); final pendingOperations = await storageService.getPendingOperations(); if (pendingOperations.isNotEmpty) { logger.i('有待上传数据[${pendingOperations.length}]'); WidgetsBinding.instance.addPostFrameCallback((_) { ToastUtil.confirm( "有[${pendingOperations.length}]条数据需要上传,现在立即上传?", () async { final result = await context.pushNamed(AppRouteNames.upload); if (result == 1) { ToastUtil.success('数据上传完成'); } else if (result == 0) { ToastUtil.warning('已取消上传'); } else if (result == 2) { ToastUtil.info('已在后台上传数据'); } else if (result == -1) { ToastUtil.error('数据上传失败'); } }, ); }); } } } }