123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- 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<MainController> {
- MainPage({super.key});
- //启动当前页面
- static void startInstance() {
- return Get.start(RouterPath.MAIN, launchModel: LaunchModel.singleTask);
- }
- static void startWithPopAll() {
- Get.offAllNamed(RouterPath.MAIN);
- }
- @override
- State<MainPage> createState() => _MainPageState();
- @override
- MainController createRawController() {
- return MainController();
- }
- }
- class _MainPageState extends BaseState<MainPage, MainController> with StateLifecycle {
- late MainState state;
- @override
- void initState() {
- super.initState();
- state = controller.state;
- }
- @override
- void dispose() {
- Get.delete<MainController>();
- 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<SystemUiOverlayStyle>(
- 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),
- ]),
- )),
- ),
- );
- }),
- ),
- );
- }
- }
|