import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:farolero/l10n/generated/app_localizations.dart'; import 'package:provider/provider.dart'; import 'estado/estado_juego.dart'; import 'servicios/servicio_idioma.dart'; import 'servicios/servicio_nearby.dart'; import 'tema/tema_app.dart'; import 'pantallas/pantalla_principal.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); SystemChrome.setSystemUIOverlayStyle( const SystemUiOverlayStyle( statusBarColor: Colors.transparent, statusBarIconBrightness: Brightness.light, systemNavigationBarColor: TemaApp.colorFondo, ), ); runApp(const FaroleroApp()); } class FaroleroApp extends StatelessWidget { const FaroleroApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider( create: (_) => EstadoJuego()..cargarBanco(), ), ChangeNotifierProvider( create: (_) => ServicioIdioma()..cargar(), ), ChangeNotifierProvider( create: (_) => ServicioNearby(), ), ], child: Consumer( builder: (context, servicioIdioma, _) { return MaterialApp( title: 'Farolero', theme: TemaApp.obtenerTema(), debugShowCheckedModeBanner: false, locale: servicioIdioma.locale, localizationsDelegates: const [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: ServicioIdioma.localesSoportados, home: const PantallaCarga(), ); }, ), ); } } class PantallaCarga extends StatelessWidget { const PantallaCarga({super.key}); @override Widget build(BuildContext context) { final estado = context.watch(); final l10n = AppLocalizations.of(context); if (estado.cargando || estado.banco == null) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text('🎭', style: TextStyle(fontSize: 72)), const SizedBox(height: 24), Text( l10n?.appTitle ?? 'Farolero', style: Theme.of(context).textTheme.headlineLarge, ), const SizedBox(height: 16), const CircularProgressIndicator(color: TemaApp.colorAcento), const SizedBox(height: 12), Text( l10n?.loadingWords ?? 'Cargando palabras...', style: Theme.of(context).textTheme.bodyMedium, ), ], ), ), ); } return const PantallaPrincipal(); } }