main.dart 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/services.dart';
  3. import 'package:initializer/app_initializer.dart';
  4. import 'package:plugin_basic/basic_export.dart';
  5. import 'package:plugin_basic/provider/app_config/app_config_service.dart';
  6. import 'package:plugin_basic/provider/global_provider_container.dart';
  7. import 'package:cs_resources/local/theme/theme_config.dart';
  8. import 'package:widgets/dialog/custom_toast_widget.dart';
  9. import 'package:widgets/dialog/custom_error_widget.dart';
  10. import 'package:widgets/dialog/custom_failure_widget.dart';
  11. import 'package:widgets/dialog/custom_success_widget.dart';
  12. import 'package:widgets/dialog/custom_loading_widget.dart';
  13. import 'package:widgets/widget_export.dart';
  14. import 'router/app_page_router.dart';
  15. import 'rp_obs/riverpod_observer.dart';
  16. void main() async {
  17. //运行App
  18. // FlutterBugly.postCatchedException(() async {
  19. //交给初始化构造器去统一初始化
  20. await AppInitializer.initializeRunalone();
  21. runApp(ProviderScope(
  22. observers: [RiverpodObserver()],
  23. child: MyApp(),
  24. ));
  25. // });
  26. }
  27. class MyApp extends StatelessWidget {
  28. MyApp({Key? key}) : super(key: key) {
  29. /// 全局设置 EasyRefresh 的样式
  30. EasyRefresh.defaultHeaderBuilder = () => const ClassicHeader(
  31. dragText: 'Pull to refresh',
  32. armedText: 'Release ready',
  33. readyText: 'Refreshing...',
  34. processingText: 'Refreshing...',
  35. processedText: 'Succeeded',
  36. noMoreText: 'No more',
  37. failedText: 'Failed',
  38. messageText: 'Last updated at %T',
  39. textStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 14),
  40. messageStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 12),
  41. iconTheme: IconThemeData(color: Color(0XFFAECAE5)),
  42. backgroundColor: Colors.transparent,
  43. );
  44. EasyRefresh.defaultFooterBuilder = () => const ClassicFooter(
  45. dragText: 'Pull to load',
  46. armedText: 'Release ready',
  47. readyText: 'Loading...',
  48. processingText: 'Loading...',
  49. processedText: 'Succeeded',
  50. noMoreText: 'No more',
  51. failedText: 'Failed',
  52. showMessage: false,
  53. triggerOffset: 50,
  54. iconDimension: 22,
  55. textStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 14),
  56. messageStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 12),
  57. iconTheme: IconThemeData(color: Color(0XFFAECAE5)),
  58. backgroundColor: Colors.transparent,
  59. );
  60. /// SmartDialog 配置
  61. SmartDialog.config
  62. ..custom = SmartConfigCustom(
  63. maskColor: Colors.black.withOpacity(0.35),
  64. useAnimation: true,
  65. )
  66. ..attach = SmartConfigAttach(
  67. animationType: SmartAnimationType.scale,
  68. usePenetrate: false,
  69. )
  70. ..loading = SmartConfigLoading(
  71. backDismiss: true,
  72. clickMaskDismiss: true,
  73. )
  74. ..toast = SmartConfigToast(
  75. intervalTime: const Duration(milliseconds: 100),
  76. displayTime: const Duration(milliseconds: 2000),
  77. );
  78. }
  79. @override
  80. Widget build(BuildContext context) {
  81. // Future.microtask(() {
  82. // globalContainer.read(appConfigServiceProvider.notifier).initSize(context);
  83. // });
  84. WidgetsBinding.instance.addPostFrameCallback((_) {
  85. globalContainer.read(appConfigServiceProvider.notifier).initSize(context);
  86. });
  87. //设置全局的状态栏文本样式
  88. SystemChrome.setSystemUIOverlayStyle(ThemeConfig.systemUiOverlayStyleLightThemeWhite);
  89. final appRouter = AppRouter();
  90. //路由管理,状态管理,依赖管理一切都始于GetMaterialApp
  91. return KeyboardVisibilityBuilder(builder: (context, isKeyboardVisible) {
  92. return KeyboardDismissOnTap(
  93. dismissOnCapturedTaps: false,
  94. child:
  95. // MaterialApp(
  96. // //顶部是否展示Debug图标
  97. // debugShowCheckedModeBanner: true,
  98. // //是否展示Log
  99. // enableLog: true,
  100. // //默认路由与路由表的加载
  101. // initialRoute: RouterPath.splash,
  102. // getPages: PageRouter.routes + BasicPageRouter.routes + AuthPageRouter.routes + JobPageRouter.routes + LabourPageRouter.routes +
  103. // ReportPageRouter.routes + LabourSGPageRouter.routes + JobPageSGRouter.routes,
  104. // //对原生导航的兼容;SmartDialog路由配置生命周期处理
  105. // navigatorObservers: [GetXRouterObserver(), FlutterSmartDialog.observer, routeObserver],
  106. // //默认页面动画
  107. // defaultTransition: Transition.rightToLeft,
  108. // smartManagement: SmartManagement.keepFactory,
  109. // //网页Title显示
  110. // title: 'YY Employer',
  111. // //样式相关
  112. // theme: ThemeConfig.lightTheme,
  113. // darkTheme: ThemeConfig.darkTheme,
  114. // themeMode: ThemeMode.light,
  115. // //本地化相关
  116. // locale: TranslationService.locale,
  117. // fallbackLocale: TranslationService.fallbackLocale,
  118. // localizationsDelegates: const [
  119. // GlobalMaterialLocalizations.delegate,
  120. // GlobalWidgetsLocalizations.delegate,
  121. // GlobalCupertinoLocalizations.delegate,
  122. // ],
  123. // supportedLocales: const [
  124. // Locale('en', 'US'),
  125. // Locale('zh', ''),
  126. // Locale('vi', ''),
  127. // ],
  128. // translations: TranslationService(),
  129. // //SmartDialog初始化默认Loading与Toast
  130. // builder: FlutterSmartDialog.init(
  131. // toastBuilder: (String msg) {
  132. // return CustomToastWidget(msg: msg);
  133. // },
  134. // loadingBuilder: (String msg) {
  135. // return CustomLoadingWidget(msg: msg == 'loading...' ? 'Loading...'.tr : msg);
  136. // },
  137. // notifyStyle: FlutterSmartNotifyStyle(
  138. // successBuilder: (String msg) => CustomSuccessWidget(msg: msg),
  139. // failureBuilder: (String msg) => CustomFailureWidget(msg: msg),
  140. // errorBuilder: (String msg) => CustomErrorWidget(msg: msg),
  141. // alertBuilder: (String msg) => CustomErrorWidget(msg: msg),
  142. // warningBuilder: (String msg) => CustomErrorWidget(msg: msg),
  143. // ),
  144. // ),
  145. // ),
  146. MaterialApp.router(
  147. title: 'PropertyManagementSystem',
  148. debugShowCheckedModeBanner: true,
  149. theme: ThemeData(
  150. colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
  151. useMaterial3: false,
  152. ),
  153. //AutoRouter的配置
  154. routerConfig: appRouter.config(),
  155. //SmartDialog初始化默认Loading与Toast
  156. builder: FlutterSmartDialog.init(
  157. toastBuilder: (String msg) {
  158. return CustomToastWidget(msg: msg);
  159. },
  160. loadingBuilder: (String msg) {
  161. return CustomLoadingWidget(msg: msg == 'loading...' ? 'Loading...' : msg);
  162. },
  163. notifyStyle: FlutterSmartNotifyStyle(
  164. successBuilder: (String msg) => CustomSuccessWidget(msg: msg),
  165. failureBuilder: (String msg) => CustomFailureWidget(msg: msg),
  166. errorBuilder: (String msg) => CustomErrorWidget(msg: msg),
  167. alertBuilder: (String msg) => CustomErrorWidget(msg: msg),
  168. warningBuilder: (String msg) => CustomErrorWidget(msg: msg),
  169. ),
  170. ),
  171. ),
  172. );
  173. });
  174. }
  175. }