main.dart 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import 'package:cpt_main/router/component/main_service_provider.dart';
  2. import 'package:cs_resources/generated/l10n.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter/services.dart';
  5. import 'package:flutter_localizations/flutter_localizations.dart';
  6. import 'package:initializer/app_initializer.dart';
  7. import 'package:plugin_basic/basic_export.dart';
  8. import 'package:plugin_basic/provider/app_config/app_config_service.dart';
  9. import 'package:cs_resources/local/theme/theme_config.dart';
  10. import 'package:plugin_basic/provider/global_provider_container.dart';
  11. import 'package:router/componentRouter/component_service_manager.dart';
  12. import 'package:cpt_profile/router/component/profile_service_provider.dart';
  13. import 'package:plugin_basic/obs/my_navigator_observer.dart';
  14. import 'package:widgets/dialog/custom_toast_widget.dart';
  15. import 'package:widgets/dialog/custom_error_widget.dart';
  16. import 'package:widgets/dialog/custom_failure_widget.dart';
  17. import 'package:widgets/dialog/custom_success_widget.dart';
  18. import 'package:widgets/dialog/custom_loading_widget.dart';
  19. import 'package:widgets/widget_export.dart';
  20. import 'router/page/app_page_router.dart';
  21. import 'router/component/app_service_provider.dart';
  22. void main() async {
  23. //交给初始化构造器去统一初始化
  24. await AppInitializer.initializeRunalone();
  25. //组件路由的注入
  26. final serviceManager = ComponentServiceManager()
  27. ..addServiceProvider(mainServiceProvider)
  28. ..addServiceProvider(appServiceProvider)
  29. ..addServiceProvider(profileServiceProvider);
  30. runApp(ProviderScope(
  31. parent: globalContainer,
  32. child: MyApp(),
  33. ));
  34. }
  35. class MyApp extends StatelessWidget {
  36. MyApp({Key? key}) : super(key: key) {
  37. /// 全局设置 EasyRefresh 的样式
  38. EasyRefresh.defaultHeaderBuilder = () => const ClassicHeader(
  39. dragText: 'Pull to refresh',
  40. armedText: 'Release ready',
  41. readyText: 'Refreshing...',
  42. processingText: 'Refreshing...',
  43. processedText: 'Succeeded',
  44. noMoreText: 'No more',
  45. failedText: 'Failed',
  46. messageText: 'Last updated at %T',
  47. textStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 14),
  48. messageStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 12),
  49. iconTheme: IconThemeData(color: Color(0XFFAECAE5)),
  50. backgroundColor: Colors.transparent,
  51. );
  52. EasyRefresh.defaultFooterBuilder = () => const ClassicFooter(
  53. dragText: 'Pull to load',
  54. armedText: 'Release ready',
  55. readyText: 'Loading...',
  56. processingText: 'Loading...',
  57. processedText: 'Succeeded',
  58. noMoreText: 'No more',
  59. failedText: 'Failed',
  60. showMessage: false,
  61. triggerOffset: 50,
  62. iconDimension: 22,
  63. textStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 14),
  64. messageStyle: TextStyle(color: Color(0XFFAECAE5), fontSize: 12),
  65. iconTheme: IconThemeData(color: Color(0XFFAECAE5)),
  66. backgroundColor: Colors.transparent,
  67. );
  68. /// SmartDialog 配置
  69. SmartDialog.config
  70. ..custom = SmartConfigCustom(
  71. maskColor: Colors.black.withOpacity(0.35),
  72. useAnimation: true,
  73. )
  74. ..attach = SmartConfigAttach(
  75. animationType: SmartAnimationType.scale,
  76. usePenetrate: false,
  77. )
  78. ..loading = SmartConfigLoading(
  79. backDismiss: true,
  80. clickMaskDismiss: true,
  81. )
  82. ..toast = SmartConfigToast(
  83. intervalTime: const Duration(milliseconds: 100),
  84. displayTime: const Duration(milliseconds: 2000),
  85. );
  86. }
  87. @override
  88. Widget build(BuildContext context) {
  89. WidgetsBinding.instance.addPostFrameCallback((_) {
  90. AppConfigService.getInstance().initSize(context);
  91. });
  92. //设置全局的状态栏文本样式
  93. SystemChrome.setSystemUIOverlayStyle(ThemeConfig.systemUiOverlayStyleLightThemeWhite);
  94. //路由管理,状态管理,依赖管理一切都始于GetMaterialApp
  95. return KeyboardVisibilityBuilder(builder: (context, isKeyboardVisible) {
  96. return KeyboardDismissOnTap(
  97. dismissOnCapturedTaps: false,
  98. child: MaterialApp.router(
  99. title: 'PropertyManagementSystem',
  100. debugShowCheckedModeBanner: true,
  101. theme: ThemeData(
  102. colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
  103. useMaterial3: false,
  104. ),
  105. //国际化配置
  106. localizationsDelegates: const [
  107. S.delegate,
  108. GlobalMaterialLocalizations.delegate,
  109. GlobalCupertinoLocalizations.delegate,
  110. GlobalWidgetsLocalizations.delegate
  111. ],
  112. //国际化英语为首选项
  113. supportedLocales: [const Locale('en', ''), ...S.delegate.supportedLocales],
  114. localeResolutionCallback: (locale, supportLocales) {
  115. // 中文 简繁体处理
  116. if (locale?.languageCode == 'zh') {
  117. if (locale?.scriptCode == 'Hant') {
  118. return const Locale('zh', 'HK'); //繁体
  119. } else {
  120. return const Locale('zh', 'CN'); //简体
  121. }
  122. }
  123. return null;
  124. },
  125. //AutoRouter的配置
  126. routerConfig: appRouter.config(
  127. navigatorObservers: () => [
  128. MyNavigatorObserver(),
  129. ],
  130. ),
  131. //SmartDialog初始化默认Loading与Toast
  132. builder: FlutterSmartDialog.init(
  133. toastBuilder: (String msg) {
  134. return CustomToastWidget(msg: msg);
  135. },
  136. loadingBuilder: (String msg) {
  137. return CustomLoadingWidget(msg: msg == 'loading...' ? 'Loading...' : msg);
  138. },
  139. notifyStyle: FlutterSmartNotifyStyle(
  140. successBuilder: (String msg) => CustomSuccessWidget(msg: msg),
  141. failureBuilder: (String msg) => CustomFailureWidget(msg: msg),
  142. errorBuilder: (String msg) => CustomErrorWidget(msg: msg),
  143. alertBuilder: (String msg) => CustomErrorWidget(msg: msg),
  144. warningBuilder: (String msg) => CustomErrorWidget(msg: msg),
  145. ),
  146. ),
  147. ),
  148. );
  149. });
  150. }
  151. }