import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:app/modules/main/main_state.dart'; import 'package:plugin_basic/base/base_stateful_page.dart'; import 'package:plugin_basic/base/base_state.dart'; import 'package:plugin_basic/base/mixin_state_lifecycle.dart'; import 'package:plugin_basic/constants/app_constant.dart'; import 'package:plugin_basic/utils/ext_get_nav.dart'; import 'package:plugin_platform/engine/media/image_picker_utils.dart'; import 'package:plugin_platform/engine/sp/sp_util.dart'; import 'package:cs_resources/constants/color_constants.dart'; import 'package:cs_resources/local/theme/theme_config.dart'; import 'package:plugin_platform/engine/toast/toast_engine.dart'; import 'package:router/componentRouter/component_router_service.dart'; import 'package:router/path/router_path.dart'; import 'package:shared/utils/log_utils.dart'; import 'package:widgets/double_tap_back_exit_app.dart'; import 'package:widgets/ext/ex_widget.dart'; import 'package:widgets/my_appbar.dart'; import 'package:widgets/my_button.dart'; import 'main_controller.dart'; /* App首页页面 底部5个 Tab + PageView 切换 */ class MainPage extends BaseStatefulPage { MainPage({super.key}); //启动当前页面 static void startInstance() { return Get.start(RouterPath.MAIN, launchModel: LaunchModel.singleTask); } static void startWithPopAll() { Get.offAllNamed(RouterPath.MAIN); } @override State createState() => _MainPageState(); @override MainController createRawController() { return MainController(); } } class _MainPageState extends BaseState with StateLifecycle { late MainState state; @override void initState() { super.initState(); state = controller.state; } @override void dispose() { Get.delete(); super.dispose(); } @override void onResume() { super.onResume(); Log.d("MainPage Lifecycle - onResume"); } @override void onPause() { super.onPause(); Log.d("MainPage Lifecycle - onPause"); } @override void onStop() { super.onStop(); Log.d("MainPage Lifecycle - onStop"); } @override void onStart() { super.onStart(); Log.d("MainPage Lifecycle - onStart"); } //黑暗模式的切换监听 @override void didChangePlatformBrightness() { int? darkModel = SPUtil.getInt(AppConstant.storagedarkmodel, defValue: 0); //当跟随系统的时候,监听系统当前的黑暗模式 if (darkModel == 0) { //延时拿到当前的值,否则可能获取的值不对 Future.delayed(const Duration(milliseconds: 250), () { Brightness currentBrightness = MediaQuery.of(context).platformBrightness; //切换全部的Theme并刷新 if (currentBrightness == Brightness.dark) { ThemeConfig.changeThemeDark(); } else { ThemeConfig.changeThemeLight(); } }); } } @override Widget build(BuildContext context) { Log.d("MainPage Lifecycle - build走了一遍"); //双击退出应用 return DoubleTapBackExitApp( child: AnnotatedRegion( value: Get.isDarkMode ? ThemeConfig.systemUiOverlayStyleDarkTheme : ThemeConfig.systemUiOverlayStyleLightThemeWhite, child: autoCtlGetBuilder(builder: (controller) { return Scaffold( appBar: MyAppBar.appBar(context, "首页".tr, backCallback: () { SmartDialog.showToast("你别点我了,没用!"); }), body: SafeArea( bottom: true, top: false, //真正的 Content 布局,使用PageView保存状态 child: Scrollbar( child: SingleChildScrollView( child: Column(mainAxisSize: MainAxisSize.min, children: [ MyButton( onPressed: () { }, text: "去登陆页面", minWidth: 150, fontSize: 15, backgroundColor: ColorConstants.appBlue, textColor: ColorConstants.white, elevation: 3, ).center().marginOnly(top: 10), MyButton( onPressed: () { }, text: "去设置页面", minWidth: 150, fontSize: 15, backgroundColor: ColorConstants.appBlue, textColor: ColorConstants.white, elevation: 3, ).center().marginOnly(top: 10), MyButton( onPressed: () { }, text: "Form表单页面", minWidth: 150, fontSize: 15, backgroundColor: ColorConstants.appBlue, textColor: ColorConstants.white, elevation: 3, ).center().marginOnly(top: 10), MyButton( onPressed: () async { }, text: "路由获取", minWidth: 150, fontSize: 15, backgroundColor: ColorConstants.appBlue, textColor: ColorConstants.white, elevation: 3, ).center().marginOnly(top: 10), MyButton( onPressed: () { ImagePickerUtils().show((filePath) { ToastEngine.show("图片路径:$filePath"); }); }, text: "申请多媒体权限,进入相册选择", minWidth: 150, fontSize: 15, backgroundColor: ColorConstants.appBlue, textColor: ColorConstants.white, elevation: 3, ).center().marginOnly(top: 10), ]), )), ), ); }), ), ); } }