import 'dart:io'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:tone_snap/components/base_easyloading.dart'; import 'package:tone_snap/data/app_config.dart'; import 'package:tone_snap/data/enum/app_side_enum.dart'; import 'package:tone_snap/data/storage/hive_storage.dart'; import 'package:tone_snap/firebase/firebase_options.dart'; import 'package:tone_snap/global/network_connectivity_service.dart'; import 'package:tone_snap/res/themes/app_themes.dart'; import 'package:tone_snap/res/values/strings.dart'; import 'package:tone_snap/routes/app_pages.dart'; import 'package:tone_snap/routes/app_routes.dart'; import 'package:tone_snap/utils/file_util.dart'; import 'package:tone_snap/utils/local_path_util.dart'; import 'package:tone_snap/utils/log_util.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 初始化Firebase try { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); } catch (e) { LogUtil.e("Firebase initialization error: $e"); } // 非异步错误 FlutterError.onError = (errorDetails) { FirebaseCrashlytics.instance.recordFlutterError(errorDetails); }; // 异步错误 PlatformDispatcher.instance.onError = (error, stack) { FirebaseCrashlytics.instance.recordError(error, stack, fatal: false); return true; }; // 初始化广告 SDK MobileAds.instance.initialize(); // 初始化Hive await initHive(); // 监听网络变化 await Get.putAsync(() async => NetworkConnectivityService()); runApp(const MyApp()); // 竖屏 SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); // 设置安卓状态栏背景色透明、底部导航栏颜色和导航栏图标亮度 if (Platform.isAndroid) { SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( statusBarColor: Colors.transparent, systemNavigationBarColor: Colors.black, systemNavigationBarIconBrightness: Brightness.light, )); } // 删除缓存文件 FileUtil.deleteAllFilesInDirectory(await LocalPathUtil.getRecordingsDir()); FileUtil.deleteAllFilesInDirectory(await LocalPathUtil.getAssetsDir()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { final easyLoading = EasyLoading.init(); return ScreenUtilInit( // 以设计稿的尺寸为基准进行适配 designSize: const Size(375, 812), minTextAdapt: true, builder: (context, child) { if (AppConfig.appSideEnum == AppSideEnum.sideA) { return GetMaterialApp( title: appName, debugShowCheckedModeBanner: false, theme: sideATheme, darkTheme: sideATheme, themeMode: ThemeMode.dark, initialRoute: AppRoutes.splashA, getPages: AppPages.routes, builder: (context, widget) { BaseEasyLoading.initGlobalConfig(); widget = easyLoading(context, widget); // 设置文字大小不随系统设置改变 return MediaQuery.withNoTextScaling(child: widget); }, ); } else { return GetMaterialApp( title: appName, debugShowCheckedModeBanner: false, theme: sideBTheme, darkTheme: sideBTheme, themeMode: ThemeMode.dark, initialRoute: AppRoutes.splashB, getPages: AppPages.routes, builder: (context, widget) { BaseEasyLoading.initGlobalConfig(); widget = easyLoading(context, widget); // 设置文字大小不随系统设置改变 return MediaQuery.withNoTextScaling(child: widget); }, ); } }, ); } }