import 'package:autos/core/routing/app_router.dart'; import 'package:autos/presentation/providers/user_provider.dart'; import 'package:autos/presentation/screens/auth/login_screen.dart'; import 'package:autos/presentation/screens/dashboard/dashboard_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; void main() { runApp(const ProviderScope(child: MyApp())); } class MyApp extends ConsumerStatefulWidget { const MyApp({super.key}); @override ConsumerState createState() => _MyAppState(); } class _MyAppState extends ConsumerState { bool _isLoading = true; @override void initState() { super.initState(); _restoreSession(); } Future _restoreSession() async { final userNotifier = ref.read(userProvider.notifier); // Load user from secure storage await userNotifier.loadUserFromStorage(); // Stop loading after user is restored setState(() => _isLoading = false); } @override Widget build(BuildContext context) { // Show loading screen until user session is restored if (_isLoading) { return const MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( body: Center(child: CircularProgressIndicator()), ), ); } final userState = ref.watch(userProvider); final user = userState.value; return MaterialApp( debugShowCheckedModeBanner: false, title: "Autos", theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), ), // Dynamic home based on session home: user != null ? const DashboardScreen() : const LoginScreen(), onGenerateRoute: AppRouter.generateRoute, ); } }