main.dart 2.2 KB

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