import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:wgshare/common/mixins/request_tool_mixin.dart'; import 'package:wgshare/common/models/user_info_detail.dart'; import 'package:wgshare/common/store/user_store.dart'; import 'package:wgshare/pages/homePage/home_logic.dart'; import 'package:wgshare/pages/userPage/user_logic.dart'; import 'package:wgshare/pages/userPage/user_view.dart'; import 'package:wgshare/utils/toast_utils.dart'; import '../utils/color_util.dart'; import 'homePage/home_view.dart'; class StartPage extends StatefulWidget { const StartPage({super.key}); @override State createState() => _StartPageState(); } class _StartPageState extends State with RequestToolMixin { DateTime? lastPopTime; final _pageController = Get.find(); late final List _bodyList; @override void initState() { super.initState(); Get.put(HomeLogic()); Get.put(UserLogic()); _bodyList = [ const HomePage(), const UserPage(), ]; String? token = UserStore.to.token; UserInfoDetail? userInfoDetail = UserStore.to.userDetailInfo.value; if ((token?.isNotEmpty ?? false) && userInfoDetail != null) { UserStore.to.updateUserInfo(); // 更新用户信息 } else { /// 没有登录返回登录页 Future.delayed(const Duration(milliseconds: 100)).then((e) { // UserStore.to.erase(); // StorageService.to.erase(); // 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: Theme( data: ThemeData( splashColor: Colors.transparent, highlightColor: Colors.transparent, ), child: Obx(() { return BottomNavigationBar ( iconSize: 24.sp, items: [ BottomNavigationBarItem( label: '首页', icon: Image.asset( 'assets/images/home_index_select_n.png', width: 22.w, height: 22.h, ), activeIcon: Image.asset( 'assets/images/home_index_select_y.png', width: 22.w, height: 22.h, ), ), BottomNavigationBarItem( label: '我的', icon: Image.asset( 'assets/images/home_user_select_n.png', width: 22.w, height: 22.h, ), activeIcon: Image.asset( 'assets/images/home_user_select_y.png', width: 22.w, height: 22.h, ), ), ], //设置显示的模式 type: BottomNavigationBarType.fixed, backgroundColor: Colors.white, selectedFontSize: 14.sp, selectedItemColor: ColorUtil.Color_85_117_242, unselectedFontSize: 14.sp, unselectedItemColor: ColorUtil.Color_80_87_103, //设置当前的索引 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 StartPageState { StartPageState({required this.pageController, this.showUpgrade = false}); RxInt pageIndex = 0.obs; bool showUpgrade; //文本输入框控制器 final PageController pageController; } class StartPageController extends GetxController with RequestToolMixin { late StartPageState _pageIndexState; @override void onInit() { _pageIndexState = StartPageState(pageController: PageController()); super.onInit(); } } class StartPageBinding extends Bindings { @override void dependencies() { Get.lazyPut(() => StartPageController()); } }