import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:novyronst/common/help/help_token.dart'; import 'package:novyronst/root/lib_export.dart'; import 'package:novyronst/root/root_page.dart'; import 'package:novyronst/tools/util/ny_device_info.dart'; import 'common/help/help_pages.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await initManage(); runApp(const RootApp()); } Future initManage() async { await NyDeviceInfo.init(); await HelpToken().init(); } class RootApp extends StatefulWidget { const RootApp({ super.key, this.home, this.locale }); final Widget? home; final Locale? locale; @override State createState() { return _RootAppState(); } } class _RootAppState extends State with WidgetsBindingObserver { bool _appInForeground = true; // @override Widget build(BuildContext context) { return AnnotatedRegion( value: const SystemUiOverlayStyle( statusBarColor: Colors.white, statusBarBrightness: Brightness.dark, // 🔥 iOS 关键:黑色文字 statusBarIconBrightness: Brightness.dark, // Android ), child: ScreenUtilInit( designSize: Size(375, 812), child: GetMaterialApp( debugShowCheckedModeBanner: false, locale: widget.locale ?? Get.deviceLocale, fallbackLocale: const Locale('en'), initialBinding: AppBindings(), initialRoute: HelpRouters.launcher, getPages: HelpPages.routes, theme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: ConstColor.themeColor, ), appBarTheme: AppBarTheme(elevation: 0, centerTitle: true), splashColor: Colors.transparent, useMaterial3: true, scaffoldBackgroundColor: Colors.white, ), builder: FlutterSmartDialog.init( builder: (context, child) { return MediaQuery( data: MediaQuery.of( context, ).copyWith(textScaler: TextScaler.linear(1.0)), child: child!, ); }, ), onInit: () {}, ), ) ); } @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); // _startPeriodicOnlineReport(); } @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override void didChangeAppLifecycleState(AppLifecycleState state) { super.didChangeAppLifecycleState(state); switch (state) { case AppLifecycleState.inactive: case AppLifecycleState.paused: // 应用进入后台或不活跃状态 if (_appInForeground) { print('💛应用不活跃'); _appInForeground = false; _onAppPaused(); } break; case AppLifecycleState.resumed: // 应用回到前台 if (!_appInForeground) { print('💚应用活跃'); _appInForeground = true; _onAppResumed(); } break; case AppLifecycleState.detached: case AppLifecycleState.hidden: break; } } // 应用进入后台时的处理 void _onAppPaused() { try { // EventClient.eventOLeaveApp(); } catch (err) { print(err.toString()); } } /// 应用回到前台时的处理 void _onAppResumed() { try { // EventClient.eventEnterApp(); // EventClient.eventOnline(); } catch (err) { print(err.toString()); } } } class AppBindings extends Bindings { @override void dependencies() { // Get.lazyPut(() => UserController()); } } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( colorScheme: .fromSeed(seedColor: Colors.deepPurple), ), ); } }