import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'core/app_theme.dart'; import 'modelos/delivery_order.dart'; import 'pantallas/login_screen.dart'; import 'pantallas/order_detail_screen.dart'; import 'pantallas/orders_screen.dart'; import 'servicios/delivery_repository.dart'; import 'servicios/push_notification_service.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await PushNotificationService.initialize(); runApp(const SmartPlusDeliveryApp()); } class SmartPlusDeliveryApp extends StatelessWidget { const SmartPlusDeliveryApp({super.key}); @override Widget build(BuildContext context) { final repository = DeliveryRepository(); return MaterialApp( title: 'SmartPlus Reparto', debugShowCheckedModeBanner: false, theme: AppTheme.light, home: _SessionGate(repository: repository), onGenerateRoute: (settings) { if (settings.name == '/orders') { return MaterialPageRoute( builder: (_) => OrdersScreen(repository: repository), ); } final order = settings.arguments; if (settings.name == '/order-detail' && order is DeliveryOrder) { return MaterialPageRoute( builder: (_) => OrderDetailScreen(order: order, repository: repository), ); } return null; }, ); } } class _SessionGate extends StatelessWidget { const _SessionGate({required this.repository}); final DeliveryRepository repository; @override Widget build(BuildContext context) => FutureBuilder( future: SharedPreferences.getInstance(), builder: (context, snapshot) { if (snapshot.connectionState != ConnectionState.done) { return const Scaffold(body: Center(child: CircularProgressIndicator())); } final token = snapshot.data?.getString('delivery_api_token'); return token == null || token.isEmpty ? LoginScreen(repository: repository) : OrdersScreen(repository: repository); }, ); }