import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:school_asignment_app/common/job/user_info.dart'; import 'package:school_asignment_app/common/job/user_info_detail.dart'; import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart'; import 'package:school_asignment_app/common/store/app_storage_key.dart'; import 'package:school_asignment_app/common/store/user_store.dart'; import 'package:school_asignment_app/common/utils/toast_utils.dart'; import 'package:school_asignment_app/page/home_page/children/my_info.dart'; import 'package:school_asignment_app/page/home_page/home_logic.dart'; import 'package:school_asignment_app/page/home_page/home_view.dart'; import 'package:school_asignment_app/page/work_page/work_logic.dart'; import 'package:school_asignment_app/page/work_page/work_view.dart'; import 'package:school_asignment_app/routes/app_pages.dart'; import '../../common/utils/storage.dart'; class StartPage extends StatefulWidget { const StartPage({Key? key}) : super(key: key); @override State createState() => _StartPageState(); } class _StartPageState extends State { DateTime? lastPopTime; final _pageController = Get.find(); late final List _bodyList; @override void initState() { super.initState(); Get.put(HomeLogic()); Get.put(WorkLogic()); _bodyList = [ const HomePage(), const WorkPage(), const MyInfo(), ]; String? token = UserStore.to.token; UserInfo? userInfo = UserStore.to.userInfo.value; UserInfoDetail? userInfoDetail = UserStore.to.userDetailInfo.value; if ((token?.isNotEmpty ?? false) && userInfo != null) { // Future.delayed(const Duration(milliseconds: 200)).then((e) { // Get.toNamed(Routes.home); // }); // 更新用户信息 if (userInfoDetail == null) UserStore.to.updateUserInfo(); } else { Future.delayed(const Duration(milliseconds: 100)).then((e) => Get.offAllNamed(Routes.login)); } } @override void dispose() { Get.delete(); super.dispose(); } /// 获取项目 icon Widget getItemIcon(String icon) { return Image.asset( icon, fit: BoxFit.contain, width: 24.w, height: 24.h, ); } @override Widget build(BuildContext context) { return WillPopScope( child: Scaffold( body: PageView( controller: _pageController._pageIndexState.pageController, physics: const BouncingScrollPhysics(), onPageChanged: (index) { _pageController._pageIndexState.pageIndex.value = index; }, children: _bodyList, ), bottomNavigationBar: Obx(() { return BottomNavigationBar( items: [ BottomNavigationBarItem( label: '首页', icon: getItemIcon('assets/images/ic_home_normal.png'), activeIcon: getItemIcon('assets/images/ic_home_press.png'), ), BottomNavigationBarItem( label: '考试', icon: getItemIcon('assets/images/ic_work_normal.png'), activeIcon: getItemIcon('assets/images/ic_work_press.png'), ), BottomNavigationBarItem( label: '我的', icon: getItemIcon('assets/images/ic_mine_normal.png'), activeIcon: getItemIcon('assets/images/ic_mine_press.png'), ), ], //设置显示的模式 type: BottomNavigationBarType.fixed, //设置当前的索引 currentIndex: _pageController._pageIndexState.pageIndex.value, //tabBottom的点击监听 onTap: (index) { print('appbar下标:${index}'); _pageController._pageIndexState.pageController.jumpToPage(index); }, ); }), ), onWillPop: () async { if (lastPopTime == null || DateTime.now().difference(lastPopTime!) > const Duration(seconds: 1)) { lastPopTime = DateTime.now(); ToastUtils.getFluttertoast(context: context, msg: '连续两次返回就退出'); return Future.value(false); } else { lastPopTime = DateTime.now(); // 退出app return Future.value(true); } }, ); } } class PageIndexState { PageIndexState({required this.pageController}); RxInt pageIndex = 0.obs; //文本输入框控制器 final PageController pageController; } class PageIndexController extends GetxController with RequestToolMixin { late PageIndexState _pageIndexState; @override void onInit() { _pageIndexState = PageIndexState(pageController: PageController()); super.onInit(); } } class StartPageIndexBinding extends Bindings { @override void dependencies() { Get.lazyPut(() => PageIndexController()); } }