import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'providers/auth_provider.dart'; import 'providers/schedule_provider.dart'; import 'providers/event_detail_provider.dart'; import 'screens/login_screen.dart'; import 'screens/schedule_screen.dart'; import 'services/api_service.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { final apiService = ApiService(); return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => AuthProvider(apiService)), ChangeNotifierProvider(create: (_) => ScheduleProvider(apiService)), ChangeNotifierProvider(create: (_) => EventDetailProvider(apiService)), ], child: MaterialApp( title: 'MyIce', theme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: Colors.indigo, brightness: Brightness.light, ), useMaterial3: true, ), home: const AppRoot(), ), ); } } class AppRoot extends StatefulWidget { const AppRoot({super.key}); @override State createState() => _AppRootState(); } class _AppRootState extends State { bool _initialized = false; @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { context.read().init().then((_) { if (mounted) { setState(() => _initialized = true); } }); }); } @override Widget build(BuildContext context) { if (!_initialized) { return const Scaffold( body: Center( child: CircularProgressIndicator(), ), ); } return Consumer( builder: (context, auth, child) { if (auth.isAuthenticated) { return const ScheduleScreen(); } return const LoginScreen(); }, ); } }