import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'core/constants/app_colors.dart'; import 'core/network/dio_client.dart'; import 'core/storage/local_storage.dart'; import 'core/theme/app_theme.dart'; import 'data/services/user_service.dart'; import 'data/services/market_service.dart'; import 'data/services/trade_service.dart'; import 'data/services/asset_service.dart'; import 'data/services/fund_service.dart'; import 'providers/auth_provider.dart'; import 'providers/market_provider.dart'; import 'providers/asset_provider.dart'; import 'ui/pages/auth/login_page.dart'; import 'ui/pages/main/main_page.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 初始化本地存储 final prefs = await SharedPreferences.getInstance(); await LocalStorage.init(); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ // 服务 Provider(create: (_) => DioClient()), ProxyProvider( create: (_) => throw UnimplementedError(), update: (_, client) => UserService(client), ), ProxyProvider( create: (_) => throw UnimplementedError(), update: (_, client) => MarketService(client), ), ProxyProvider( create: (_) => throw UnimplementedError(), update: (_, client) => TradeService(client), ), ProxyProvider( create: (_) => throw UnimplementedError(), update: (_, client) => AssetService(client), ), ProxyProvider( create: (_) => throw UnimplementedError(), update: (_, client) => FundService(client), ), // 状态管理 ProxyProvider2( create: (_) => throw UnimplementedError(), update: (_, userService, __) => AuthProvider(userService), ), ProxyProvider( create: (_) => throw UnimplementedError(), update: (_, service) => MarketProvider(service), ), ProxyProvider2( create: (_) => throw UnimplementedError(), update: (_, assetService, fundService) => AssetProvider(assetService, fundService), ), ], child: MaterialApp( title: '模拟所', debugShowCheckedModeBanner: false, theme: AppTheme.darkTheme, home: Consumer( builder: (context, auth, _) { if (auth.isLoading) { return const Scaffold( backgroundColor: AppColors.background, body: Center( child: CircularProgressIndicator(color: AppColors.primary), ), ); } if (auth.isLoggedIn) { return const MainPage(); } return const LoginPage(); }, ), ), ); } }