import 'package:flutter/material.dart'; import 'package:tugas_akhir_supabase/screens/admin/admin_dashboard.dart'; import 'package:tugas_akhir_supabase/screens/admin/community_management.dart'; import 'package:tugas_akhir_supabase/screens/admin/crop_management.dart'; import 'package:tugas_akhir_supabase/screens/admin/user_management.dart'; import 'package:tugas_akhir_supabase/screens/auth/forgot_password_screen.dart'; import 'package:tugas_akhir_supabase/screens/auth/login_screen.dart'; import 'package:tugas_akhir_supabase/screens/auth/otp_screen.dart'; import 'package:tugas_akhir_supabase/screens/auth/register_screen.dart'; import 'package:tugas_akhir_supabase/screens/auth/reset_password_screen.dart'; import 'package:tugas_akhir_supabase/screens/calendar/calendar_screen.dart'; import 'package:tugas_akhir_supabase/screens/calendar/field_management_screen.dart'; import 'package:tugas_akhir_supabase/screens/calendar/schedule_list_screen.dart'; import 'package:tugas_akhir_supabase/screens/community/community_screen.dart'; import 'package:tugas_akhir_supabase/screens/community/enhanced_community_screen.dart'; import 'package:tugas_akhir_supabase/screens/home_screen.dart'; import 'package:tugas_akhir_supabase/screens/image_processing/plant_scanner_screen.dart'; import 'package:tugas_akhir_supabase/screens/intro/animation_splash_screen.dart'; import 'package:tugas_akhir_supabase/screens/intro/intro_page_screen.dart'; import 'package:tugas_akhir_supabase/screens/panen/analisis_chart_screen.dart'; import 'package:tugas_akhir_supabase/screens/panen/analisis_hasil_screen.dart'; import 'package:tugas_akhir_supabase/screens/panen/analisis_input_screen.dart'; import 'package:tugas_akhir_supabase/screens/panen/analisis_panen_screen.dart'; import 'package:tugas_akhir_supabase/screens/profile_screen.dart'; import 'package:tugas_akhir_supabase/screens/calendar/schedule_detail_screen.dart'; import 'package:tugas_akhir_supabase/widgets/session_guard_wrapper.dart'; /// Defines all routes used in the application class AppRoutes { /// Non-authenticated routes static final Map _publicRoutes = { '/': (context) => const SplashScreen(), '/intro': (context) => const AnimatedIntroScreen(), '/login': (context) => const LoginScreen(), '/register': (context) => const RegisterScreen(), '/forgot-password': (context) => const ForgotPasswordScreen(), '/otp': (context) { final args = ModalRoute.of(context)?.settings.arguments as Map?; return OtpScreen( email: args?['email'] ?? '', userId: args?['userId'] ?? '', ); }, '/reset-password': (context) => const ResetPasswordScreen(), }; /// Authenticated routes static final Map _authenticatedRoutes = { '/home': (context) => const HomeScreen(), '/profile': (context) => const ProfileScreen(), '/calendar': (context) => const KalenderTanamScreen(), '/field-management': (context) => const FieldManagementScreen(), '/schedule-list': (context) => const ScheduleListScreen(), '/plant-scanner': (context) => const PlantScannerScreen(), '/community': (context) => const CommunityScreen(), '/enhanced-community': (context) => const EnhancedCommunityScreen(), '/analisis': (context) { final args = ModalRoute.of(context)?.settings.arguments as Map?; return HarvestAnalysisScreen(userId: args?['userId'] ?? ''); }, '/analisis-input': (context) { final args = ModalRoute.of(context)?.settings.arguments as Map?; return AnalisisInputScreen(userId: args?['userId'] ?? ''); }, '/analisis-hasil': (context) { final args = ModalRoute.of(context)?.settings.arguments as Map?; return HarvestResultScreen( userId: args?['userId'] ?? '', harvestData: args?['harvestData'], scheduleData: args?['scheduleData'], ); }, '/analisis-chart': (context) { final args = ModalRoute.of(context)?.settings.arguments as Map?; return HarvestAnalysisChart( userId: args?['userId'] ?? '', harvestData: args?['harvestData'], scheduleData: args?['scheduleData'], isManualInput: args?['isManualInput'] ?? false, ); }, '/kalender-detail': (context) { final args = ModalRoute.of(context)?.settings.arguments as Map?; return ScheduleDetailScreen(scheduleId: args?['scheduleId'] ?? ''); }, /// Admin routes '/admin': (context) => const AdminDashboard(), '/admin/users': (context) => const UserManagement(), '/admin/crops': (context) => const CropManagement(), '/admin/community': (context) => const CommunityManagement(), }; /// Combined routes with session guard for authenticated routes static Map get routes { final Map allRoutes = {}; /// Add public routes as-is allRoutes.addAll(_publicRoutes); /// Add authenticated routes wrapped with SessionGuardWrapper _authenticatedRoutes.forEach((route, builder) { allRoutes[route] = (context) => SessionGuardWrapper(child: builder(context)); }); return allRoutes; } }