import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:login_vault_app/auth_service.dart'; import 'package:login_vault_app/theme_provider.dart'; import 'package:login_vault_app/auth_screen.dart'; import 'package:login_vault_app/dashboard_screen.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); final auth = AuthService(); final theme = ThemeProvider(); final registered = await auth.isRegistered(); final email = await auth.getEmail() ?? ''; runApp( MultiProvider( providers: [ Provider.value(value: auth), ChangeNotifierProvider.value(value: theme), ], child: MyApp(registered: registered, email: email), ), ); } class MyApp extends StatelessWidget { final bool registered; final String email; const MyApp({super.key, required this.registered, required this.email}); @override Widget build(BuildContext context) { final theme = Provider.of(context); final auth = Provider.of(context, listen: false); return MaterialApp( title: 'Login Vault', theme: ThemeData( useMaterial3: true, brightness: Brightness.light, colorSchemeSeed: Colors.indigo, ), darkTheme: ThemeData( useMaterial3: true, brightness: Brightness.dark, colorSchemeSeed: Colors.indigo, ), themeMode: theme.mode, // decide home: if registered AND email known -> Dashboard, else Auth. home: (registered && email.isNotEmpty) ? DashboardScreen(auth: auth, theme: theme, email: email) : AuthScreen(auth: auth), debugShowCheckedModeBanner: false, ); } }