import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:recording_tool/app/config/app_config.dart'; import 'package:recording_tool/app/router/app_navigator.dart'; import 'package:recording_tool/app/theme/app_theme.dart'; import 'package:recording_tool/features/recording/pages/page_record.dart'; import 'package:recording_tool/features/recording/view-model/view_model_recording.dart'; class FlutterTemplateApp extends ConsumerStatefulWidget { const FlutterTemplateApp({super.key}); @override ConsumerState createState() => _FlutterTemplateAppState(); } class _FlutterTemplateAppState extends ConsumerState with WidgetsBindingObserver { @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); WidgetsBinding.instance.addPostFrameCallback((_) { ref.read(recordingViewModelProvider.notifier).getClipboardContent(); }); } @override void didChangeAppLifecycleState(AppLifecycleState state) { if (state == AppLifecycleState.resumed) { ref.read(recordingViewModelProvider.notifier).getClipboardContent(); } } @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override Widget build(BuildContext context) { return ScreenUtilInit( designSize: AppConfig.designSize, minTextAdapt: true, splitScreenMode: true, builder: (context, child) { return MaterialApp( title: AppConfig.appName, navigatorKey: AppNavigator.navigatorKey, navigatorObservers: [RouteTracker()], debugShowCheckedModeBanner: false, theme: AppTheme.light, darkTheme: AppTheme.dark, supportedLocales: const [Locale('zh', 'CN'), Locale('en', 'US')], localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], builder: EasyLoading.init( builder: (context, child) { return MediaQuery( data: MediaQuery.of( context, ).copyWith(textScaler: const TextScaler.linear(1)), child: child ?? const SizedBox.shrink(), ); }, ), home: RefreshConfiguration( enableLoadingWhenNoData: false, headerTriggerDistance: 80.h, child: const RecordingPage(), ), ); }, ); } }