52 lines
1.5 KiB
Dart
52 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:get/get.dart';
|
||
import 'utils/app_theme.dart';
|
||
import 'utils/app_initializer.dart';
|
||
import 'utils/force_guide_checker.dart';
|
||
import 'routes/app_routes.dart';
|
||
import 'constants/app_constants.dart';
|
||
import 'controllers/shared_preferences_storage_controller.dart';
|
||
import 'services/get/theme_controller.dart';
|
||
|
||
void main() async {
|
||
WidgetsFlutterBinding.ensureInitialized();
|
||
|
||
await SharedPreferencesStorageController.init();
|
||
|
||
// 初始化 ThemeController(在 AppInitializer 之前,确保主题最先加载)
|
||
Get.put(ThemeController(), permanent: true);
|
||
|
||
final result = await AppInitializer.initialize();
|
||
|
||
runApp(
|
||
MyApp(
|
||
initialRoute: result.initialRoute,
|
||
guideCheckResult: result.guideCheckResult,
|
||
),
|
||
);
|
||
}
|
||
|
||
class MyApp extends StatelessWidget {
|
||
final String initialRoute;
|
||
final GuideCheckResult? guideCheckResult;
|
||
|
||
const MyApp({super.key, required this.initialRoute, this.guideCheckResult});
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
// 使用 Obx 监听主题变化
|
||
return Obx(() {
|
||
final themeController = Get.find<ThemeController>();
|
||
return GetMaterialApp(
|
||
title: AppConstants.appName,
|
||
debugShowCheckedModeBanner: false,
|
||
theme: AppTheme.lightTheme,
|
||
darkTheme: AppTheme.darkTheme,
|
||
themeMode: themeController.currentThemeMode,
|
||
initialRoute: initialRoute,
|
||
onGenerateRoute: AppRoutes.generateRoute,
|
||
);
|
||
});
|
||
}
|
||
}
|