main.dart 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import 'package:atmob_channel_reader/atmob_channel_reader.dart';
  2. import 'package:clean/data/consts/constants.dart';
  3. import 'package:clean/resource/colors.gen.dart';
  4. import 'package:clean/resource/string.gen.dart';
  5. import 'package:clean/resource/string_source.dart';
  6. import 'package:clean/router/app_pages.dart';
  7. import 'package:clean/sdk/umeng/umeng_helper.dart';
  8. import 'package:clean/utils/app_info_util.dart';
  9. import 'package:clean/utils/mmkv_util.dart';
  10. import 'package:flutter/material.dart';
  11. import 'package:flutter_localizations/flutter_localizations.dart';
  12. import 'package:flutter_screenutil/flutter_screenutil.dart';
  13. import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
  14. import 'package:get/get_navigation/src/root/get_material_app.dart';
  15. import 'package:pull_to_refresh/pull_to_refresh.dart';
  16. import 'device/atmob_platform_info.dart';
  17. import 'device/device_info_util.dart';
  18. Future<void> main() async {
  19. await KVUtil.init();
  20. initChannel();
  21. //初始化
  22. await initAfterGrant();
  23. runApp(const MyApp());
  24. }
  25. Future<void> initAfterGrant() async {
  26. if (!isAgreePrivacyPolicy()) {
  27. return;
  28. }
  29. //获取包信息
  30. await appInfoUtil.init();
  31. //获取设备信息
  32. await deviceInfoUtil.init();
  33. // 初始化友盟
  34. await UmengHelper.initCommon();
  35. }
  36. initChannel() async {
  37. await AtmobChannelReader.default4Test(Constants.appDefaultChannel,
  38. Constants.appDefaultAppId, Constants.appDefaultTgPlatformId);
  39. String? channel = KVUtil.getString(
  40. Constants.appChanelName, await AtmobChannelReader.getChannel());
  41. KVUtil.putString(Constants.appChanelName, channel);
  42. int? channelId = KVUtil.getInt(Constants.appChannelId, -1);
  43. if (channelId == -1) {
  44. channelId = await AtmobChannelReader.getAppId();
  45. }
  46. if (channelId != null) {
  47. KVUtil.putInt(Constants.appChannelId, channelId);
  48. }
  49. int? appTgPlatformId = KVUtil.getInt(Constants.appTgPlatformId, -1);
  50. if (appTgPlatformId == -1) {
  51. appTgPlatformId = await AtmobChannelReader.getTgPlatformId();
  52. }
  53. if (appTgPlatformId != null) {
  54. KVUtil.putInt(Constants.appTgPlatformId, appTgPlatformId);
  55. }
  56. atmobPlatformInfo.setChannelName(channel);
  57. atmobPlatformInfo.setAppId(channelId);
  58. atmobPlatformInfo.setTgPlatform(appTgPlatformId);
  59. }
  60. class MyApp extends StatelessWidget {
  61. const MyApp({super.key});
  62. @override
  63. Widget build(BuildContext context) {
  64. return ScreenUtilInit(
  65. designSize: const Size(360, 800),
  66. builder: (_, child) {
  67. return _buildMaterialApp();
  68. },
  69. );
  70. }
  71. _buildMaterialApp() {
  72. return RefreshConfiguration(
  73. headerBuilder: () =>
  74. const MaterialClassicHeader(color: ColorName.colorPrimary),
  75. // footerBuilder: () => ClassicFooter(
  76. // canLoadingText: StringName.loadingMore,
  77. // idleText: StringName.loadPullUp,
  78. // loadingText: StringName.loadingTxt,
  79. // noDataText: StringName.loadNoData,
  80. // failedText: StringName.loadFailed,
  81. // ),
  82. child: GetMaterialApp(
  83. onGenerateTitle: (_) => StringName.appName,
  84. getPages: AppPage.pages,
  85. initialRoute: RoutePath.splash,
  86. initialBinding: AppBinding(),
  87. theme: ThemeData(
  88. useMaterial3: true,
  89. textSelectionTheme: const TextSelectionThemeData(
  90. cursorColor: ColorName.colorPrimary, // 设置默认光标颜色
  91. selectionHandleColor: ColorName.colorPrimary, // 设置光标下面水滴的颜色
  92. ),
  93. ),
  94. navigatorObservers: [FlutterSmartDialog.observer],
  95. builder: FlutterSmartDialog.init(),
  96. translations: StringResource(),
  97. localizationsDelegates: const [
  98. GlobalMaterialLocalizations.delegate,
  99. //是Flutter的一个本地化委托,用于提供Material组件库的本地化支持
  100. GlobalWidgetsLocalizations.delegate,
  101. //用于提供通用部件(Widgets)的本地化支持
  102. GlobalCupertinoLocalizations.delegate,
  103. //用于提供Cupertino风格的组件的本地化支持
  104. ],
  105. supportedLocales: const [
  106. Locale('zh', 'CN'), // 支持的语言和地区
  107. ],
  108. // 你的翻译
  109. locale: const Locale('zh', 'CN'),
  110. // 将会按照此处指定的语言翻译 添加一个回调语言选项,以备上面指定的语言翻译不存在
  111. fallbackLocale: const Locale('zh', 'CN'),
  112. ),
  113. );
  114. }
  115. }