| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- 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<HomePage> createState() => _HomePageState();
- }
- class _HomePageState extends ConsumerState<HomePage> {
- int _selectedIndex = 0;
- bool _needCheck = true;
- static const List<String> _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<void> _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('数据上传失败');
- }
- },
- );
- });
- }
- }
- }
- }
|