import 'package:cpt_auth/router/auth_service_impl.dart'; import 'package:cpt_auth/router/page_router.dart'; import 'package:cpt_job/router/job_service_impl.dart'; import 'package:cpt_labour/router/labour_service_impl.dart'; import 'package:cpt_labour/router/page_router.dart'; import 'package:cpt_report/router/report_service_impl.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bugly/flutter_bugly.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:initializer/global_services_injection.dart'; import 'package:initializer/app_initializer.dart'; import 'package:plugin_basic/basic_export.dart'; import 'package:router/componentRouter/auth_service.dart'; import 'package:router/componentRouter/job_service.dart'; import 'package:router/componentRouter/labour_service.dart'; import 'package:router/componentRouter/report_service.dart'; import 'package:shared/utils/log_utils.dart'; import 'package:plugin_platform/engine/sp/sp_util.dart'; import 'package:plugin_basic/constants/app_constant.dart'; import 'package:cs_resources/local/theme/theme_config.dart'; import 'package:cs_resources/local/language/translation_service.dart'; import 'package:router/path/router_path.dart'; import 'package:router/observer/getx_router_observer.dart'; import 'package:plugin_basic/router/basic_page_router.dart'; import 'package:widgets/dialog/custom_toast_widget.dart'; import 'package:widgets/dialog/custom_error_widget.dart'; import 'package:widgets/dialog/custom_failure_widget.dart'; import 'package:widgets/dialog/custom_success_widget.dart'; import 'package:widgets/dialog/custom_loading_widget.dart'; import 'package:widgets/widget_export.dart'; import 'router/page_router.dart'; void main() { //运行App FlutterBugly.postCatchedException(() async { //交给初始化构造器去统一初始化 AppInitializer.initialize(); //全局自定义单例服务的注入 GlobalServicesInjection.init(additionalDependencies: () { Get.lazyPut(() => AuthServiceImpl()); Get.lazyPut(() => LabourServiceImpl()); Get.lazyPut(() => JobServiceImpl()); Get.lazyPut(() => ReportServiceImpl()); }); runApp(MyApp()); }); } class MyApp extends StatelessWidget { MyApp({Key? key}) : super(key: key) { /// 全局设置 EasyRefresh 的样式 EasyRefresh.defaultHeaderBuilder = () => ClassicHeader( dragText: '下拉刷新'.tr, armedText: '释放刷新'.tr, readyText: '刷新中...'.tr, processingText: '刷新中...'.tr, processedText: '成功'.tr, noMoreText: '没有更多数据'.tr, failedText: '失败'.tr, messageText: '最近更新于 %T'.tr, ); EasyRefresh.defaultFooterBuilder = () => ClassicFooter( dragText: '上拉加载更多'.tr, armedText: '释放刷新'.tr, readyText: '加载中...'.tr, processingText: '加载中...'.tr, processedText: '成功'.tr, noMoreText: '没有更多数据'.tr, failedText: '成功'.tr, showMessage: false, triggerOffset: 50, iconDimension: 22, ); /// SmartDialog 配置 SmartDialog.config ..custom = SmartConfigCustom( maskColor: Colors.black.withOpacity(0.35), useAnimation: true, ) ..attach = SmartConfigAttach( animationType: SmartAnimationType.scale, usePenetrate: false, ) ..loading = SmartConfigLoading( backDismiss: true, clickMaskDismiss: true, ) ..toast = SmartConfigToast( intervalTime: const Duration(milliseconds: 100), displayTime: const Duration(milliseconds: 2000), ); } @override Widget build(BuildContext context) { int? darkModel = SPUtil.getInt(AppConstant.storagedarkmodel, defValue: 0); if (GetPlatform.isAndroid) { //根据SP存入的暗色模式,指定全局页面的状态栏,导航栏等设置 switch (darkModel) { case 1: Log.d("main.dart - 指定亮色模式"); SystemChrome.setSystemUIOverlayStyle(ThemeConfig.systemUiOverlayStyleLightThemeBlack); break; case 2: Log.d("main.dart - 指定暗色模式"); SystemChrome.setSystemUIOverlayStyle(ThemeConfig.systemUiOverlayStyleDarkTheme); break; default: Brightness currentBrightness = MediaQuery .of(context) .platformBrightness; if (currentBrightness == Brightness.dark) { Log.d("main.dart - 跟随系统模式-暗色模式"); SystemChrome.setSystemUIOverlayStyle(ThemeConfig.systemUiOverlayStyleDarkTheme); } else { Log.d("main.dart - 跟随系统模式-亮色模式"); SystemChrome.setSystemUIOverlayStyle(ThemeConfig.systemUiOverlayStyleLightThemeBlack); } break; } } //路由管理,状态管理,依赖管理一切都始于GetMaterialApp return KeyboardVisibilityBuilder(builder: (context, isKeyboardVisible) { return KeyboardDismissOnTap( dismissOnCapturedTaps: true, child: GetMaterialApp( //顶部是否展示Debug图标 debugShowCheckedModeBanner: true, //是否展示Log enableLog: true, //默认路由与路由表的加载 initialRoute: RouterPath.SPLASH, getPages: PageRouter.routes + BasicPageRouter.routes /*+ LabourPageRouter.routes + AuthPageRouter.routes +*/, //对原生导航的兼容;SmartDialog路由配置生命周期处理 navigatorObservers: [GetXRouterObserver(), FlutterSmartDialog.observer, routeObserver], //默认页面动画 defaultTransition: Transition.rightToLeft, smartManagement: SmartManagement.keepFactory, //网页Title显示 title: 'FlutterRoom'.tr, //样式相关 theme: ThemeConfig.lightTheme, darkTheme: ThemeConfig.darkTheme, themeMode: darkModel == 1 ? ThemeMode.light : darkModel == 2 ? ThemeMode.dark : ThemeMode.system, //本地化相关 locale: TranslationService.locale, fallbackLocale: TranslationService.fallbackLocale, localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale('zh', 'CH'), Locale('en', 'US'), ], translations: TranslationService(), //SmartDialog初始化默认Loading与Toast builder: FlutterSmartDialog.init( toastBuilder: (String msg) { return CustomToastWidget(msg: msg); }, loadingBuilder: (String msg) { return CustomLoadingWidget(msg: msg == 'loading...' ? '加载中...'.tr : msg); }, notifyStyle: FlutterSmartNotifyStyle( successBuilder: (String msg) => CustomSuccessWidget(msg: msg), failureBuilder: (String msg) => CustomFailureWidget(msg: msg), errorBuilder: (String msg) => CustomErrorWidget(msg: msg), alertBuilder: (String msg) => CustomErrorWidget(msg: msg), warningBuilder: (String msg) => CustomErrorWidget(msg: msg), ), ), ), ); }); } }