main.dart 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import 'dart:async';
  2. import 'dart:io';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter/services.dart';
  5. import 'package:get/get.dart';
  6. import 'app/app.dart';
  7. import 'app/constants/api_domains.dart';
  8. import 'app/constants/environment.dart';
  9. import 'app/controllers/api_controller.dart';
  10. import 'app/controllers/core_controller.dart';
  11. import 'app/data/sp/ix_sp.dart';
  12. import 'utils/device_manager.dart';
  13. import 'utils/log/log_manager.dart';
  14. import 'utils/log/logger.dart';
  15. import 'utils/ntp_time_service.dart';
  16. import 'config/theme/theme_extensions/theme_extension.dart';
  17. Future<void> main() async {
  18. runZonedGuarded(
  19. () async {
  20. // 初始化环境
  21. Environment.initialize();
  22. await _initializeApp();
  23. runApp(const App());
  24. },
  25. (error, stackTrace) {
  26. // TODO统一错误处理
  27. log('main', 'Error: $error\n$stackTrace');
  28. },
  29. );
  30. }
  31. // 将初始化逻辑提取到单独的方法
  32. Future<void> _initializeApp() async {
  33. try {
  34. WidgetsFlutterBinding.ensureInitialized();
  35. // 1. 系统UI配置
  36. await _configureSystemUI();
  37. // 2. 初始化日志
  38. await LogManager().init();
  39. // 3. 数据存储初始化
  40. await IXSP.init();
  41. // 3.1 初始化ApiDomains
  42. await ApiDomains.instance.init();
  43. // 4. 获取设备ID
  44. await DeviceManager.getDeviceId();
  45. // 5. 注册全局控制器
  46. _registerControllers();
  47. // 6. 初始化响应式主题
  48. ReactiveTheme.init();
  49. // 7. 初始化NTP时间校准器
  50. NtpTimeService().initialize();
  51. } catch (e, stack) {
  52. log('main', 'Initialization error: $e\n$stack');
  53. rethrow;
  54. }
  55. }
  56. void _registerControllers() {
  57. Bind.lazyPut(() => CoreController());
  58. Bind.lazyPut(() => ApiController());
  59. }
  60. Future<void> _configureSystemUI() async {
  61. // UI相关配置集中管理
  62. // await SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
  63. if (Platform.isAndroid) {
  64. await SystemChrome.setPreferredOrientations([
  65. DeviceOrientation.portraitUp,
  66. DeviceOrientation.portraitDown,
  67. ]);
  68. }
  69. // 设置系统UI样式,确保系统导航栏完全透明
  70. // SystemChrome.setSystemUIOverlayStyle(
  71. // const SystemUiOverlayStyle(
  72. // statusBarColor: Colors.transparent,
  73. // systemNavigationBarColor: Colors.transparent,
  74. // ),
  75. // );
  76. }