import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'core/di/injection.dart'; import 'core/router/app_router.dart'; import 'core/constants/app_colors.dart'; import 'core/network/api_client.dart'; import 'core/router/routes.dart'; import 'presentation/providers/user_providers.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 初始化 Hive await Hive.initFlutter(); // 初始化依赖注入 await configureDependencies(); runApp(const ProviderScope(child: MiningApp())); } class MiningApp extends ConsumerStatefulWidget { const MiningApp({super.key}); @override ConsumerState createState() => _MiningAppState(); } class _MiningAppState extends ConsumerState { @override void initState() { super.initState(); // 设置 401 全局处理回调 ApiClient.onUnauthorized = _handleUnauthorized; } void _handleUnauthorized() { // 清除用户状态 ref.read(userNotifierProvider.notifier).logout(); // 跳转到登录页 final router = ref.read(appRouterProvider); router.go(Routes.login); } @override Widget build(BuildContext context) { final router = ref.watch(appRouterProvider); return MaterialApp.router( title: '榴莲挖矿', debugShowCheckedModeBanner: false, theme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: AppColors.primary, brightness: Brightness.light, ), useMaterial3: true, appBarTheme: const AppBarTheme( centerTitle: true, elevation: 0, ), cardTheme: const CardThemeData( elevation: 2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.all(Radius.circular(12)), ), ), ), routerConfig: router, ); } }