import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:prosappco/src/authentication/authentication_repository.dart'; import 'package:prosappco/src/presentation/screens/service_web.dart'; import 'package:prosappco/src/providers/user_provider.dart'; import 'package:prosappco/src/presentation/screens/calendar.dart'; import 'package:prosappco/src/presentation/screens/city.dart'; import 'package:prosappco/src/presentation/screens/login/login.dart'; import 'package:prosappco/src/presentation/screens/login/login_email.dart'; import 'package:prosappco/src/presentation/screens/my_services.dart'; import 'package:prosappco/src/presentation/screens/my_services_pro.dart'; import 'package:prosappco/src/presentation/screens/new_number.dart'; import 'package:prosappco/src/presentation/screens/new_password.dart'; import 'package:prosappco/src/presentation/screens/profession.dart'; import 'package:prosappco/src/presentation/screens/professional_profile.dart'; import 'package:prosappco/src/presentation/screens/professional_revision.dart'; import 'package:prosappco/src/presentation/screens/profile/profile.dart'; import 'package:prosappco/src/presentation/screens/profile/profile_pro.dart'; import 'package:prosappco/src/presentation/screens/register/register.dart'; import 'package:prosappco/src/presentation/screens/request_sent.dart'; import 'package:prosappco/src/presentation/screens/reset_password/reset_password.dart'; import 'package:prosappco/src/presentation/screens/map/service.dart'; import 'package:prosappco/src/presentation/screens/solicitudes.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:provider/provider.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:prosappco/src/utils/app_navigator.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // Trigger singleton init which schedules _checkSession after first frame AuthenticationRepository.instance; await initializeDateFormatting('es_MX', null); SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => UserProvider()), ], child: MaterialApp( navigatorKey: appNavigatorKey, theme: ThemeData(fontFamily: 'Poppins'), debugShowCheckedModeBanner: false, localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [Locale('es', 'US')], title: 'ProsApp', initialRoute: '/', routes: { '/': (context) => const LoginScreen(), '/splash': (context) => const SplashScreen(), '/login': (context) => const LoginEmailScreen(), '/profile': (context) => const ProfileScreen(), '/register': (context) => const RegisterScreen(), '/city': (context) => const CityScreen(), '/profession': (context) => const ProfessionScreen(), '/newNumber': (context) => const NewNumberScreen(), '/profesionalRevision': (context) => const ProfessionalRevisionScreen(), '/profesionalProfile': (context) => const ProfessionalProfileScreen(), '/solicitudEnviada': (context) => const RequestSentScreen(), '/nuevaPassword': (context) => NewPasswordScreen(), '/servicio': (context) => const ServiceScreen(), '/servicioWeb': (context) => const ServiceWebScreen(), '/profilePro': (context) => const ProfileProScreen(), '/calendar': (context) => const CalendarScreen(), '/solicitud': (context) => SolicitudScreen(), '/misserviciospro': (context) => MyServicesProScreen(), '/misservicios': (context) => MyServicesScreen(), '/resetpassword': (context) => const ResetPasswordScreen(), }, onGenerateRoute: (settings) { throw Exception('Ruta desconocida: ${settings.name}'); }, ), ); } } class SplashScreen extends StatefulWidget { const SplashScreen({super.key}); @override State createState() => _SplashScreenState(); } class _SplashScreenState extends State { @override void initState() { super.initState(); if (kIsWeb) { Future.delayed(const Duration(seconds: 3), () { Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => const LoginScreen()), ); }); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.blue, body: Center( child: kIsWeb ? Image.asset('/images/splash.png') : const LoginScreen(), ), ); } }