import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'screens/home_screen.dart'; import 'screens/permission_screen.dart'; import 'theme/app_theme.dart'; import 'providers/time_tracking_provider.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 初始化日期格式化本地化数据 await initializeDateFormatting('zh_CN', null); runApp( const ProviderScope( child: AutoTimeTrackerApp(), ), ); } class AutoTimeTrackerApp extends StatelessWidget { const AutoTimeTrackerApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'AutoTime Tracker', debugShowCheckedModeBanner: false, theme: AppTheme.lightTheme, darkTheme: AppTheme.darkTheme, themeMode: ThemeMode.system, home: const PermissionCheckScreen(), ); } } /// 权限检查屏幕 - 检查权限后决定显示哪个页面 class PermissionCheckScreen extends ConsumerWidget { const PermissionCheckScreen({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { // Web 平台直接显示主界面(使用测试数据) if (kIsWeb) { return const HomeScreen(); } final permissionStatus = ref.watch(permissionStatusProvider); return permissionStatus.when( data: (hasPermission) { if (hasPermission) { return const HomeScreen(); } else { return const PermissionScreen(); } }, loading: () => const Scaffold( body: Center(child: CircularProgressIndicator()), ), error: (error, stack) => Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Icon(Icons.error_outline, size: 48, color: Colors.red), const SizedBox(height: 16), Text('检查权限时出错: $error'), const SizedBox(height: 16), ElevatedButton( onPressed: () { ref.invalidate(permissionStatusProvider); }, child: const Text('重试'), ), ], ), ), ), ); } }