178 lines
5.3 KiB
Dart
178 lines
5.3 KiB
Dart
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<StartPage> createState() => _StartPageState();
|
||
}
|
||
|
||
class _StartPageState extends State<StartPage> with RequestToolMixin {
|
||
DateTime? lastPopTime;
|
||
final _pageController = Get.find<StartPageController>();
|
||
|
||
late final List<Widget> _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<StartPageController>();
|
||
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>[
|
||
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());
|
||
}
|
||
}
|