main.dart 2.0 KB

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