import 'package:firebase_ui_auth/firebase_ui_auth.dart'; import 'package:flutter/material.dart'; import 'package:medora/controllers/consultation_center_controller.dart'; import 'package:medora/data/models/consultation_center.dart'; import 'package:medora/data/models/doctor.dart'; import 'package:medora/screens/authentication/launch_screen.dart'; // import 'package:medora/data/telemed_user.dart'; import 'package:medora/controllers/patient_controller.dart'; import 'package:medora/route/route_names.dart'; import 'package:medora/screens/common/loading_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_consultation_schedule/business_center_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_consultation_schedule/center_fee_and_duration_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_consultation_schedule/consultation_day_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_consultation_schedule/consultation_centers_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_consultation_schedule/consultation_time_slot_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_dashboard/doctor_dashboard_home_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_dashboard/doctor_dashboard_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_dashboard/doctor_landing_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_dashboard/doctor_personal_profile_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_dashboard/doctor_services_menu_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/achivements_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/address_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/digital_signature_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/doctor_profile_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/experience_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/profile_description_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/qualifications_screen.dart'; import 'package:medora/screens/doctor_screen/doctor_profile_screens/specialities_selection_screen.dart'; import 'package:medora/screens/patient_screens/appoinment_bookings/consultation_booking_screen.dart'; import 'package:medora/screens/patient_screens/appoinment_bookings/consultation_time_screen.dart'; import 'package:medora/screens/patient_screens/appoinment_bookings/consultations_center_screen.dart'; import 'package:medora/screens/patient_screens/appoinment_bookings/doctor_details_screen.dart'; import 'package:medora/screens/patient_screens/appoinment_bookings/doctors_list_screen.dart'; import 'package:medora/screens/patient_screens/appoinment_bookings/speciality_screen.dart'; import 'package:medora/screens/patient_screens/patient_dashboard/patient_dashboard_screen.dart'; import 'package:medora/screens/patient_screens/patient_dashboard/patient_home_screen.dart'; import 'package:medora/screens/patient_screens/patient_dashboard/patient_profile_screen.dart'; import 'package:medora/screens/patient_screens/registration_screens/patient_adress_screen.dart'; import 'package:medora/screens/patient_screens/registration_screens/patient_family_members_screen.dart'; import 'package:medora/screens/patient_screens/registration_screens/patient_registration_screen.dart'; import 'package:medora/screens/splash_screen.dart'; import '../controllers/doctor_controller.dart'; import '../screens/patient_screens/patient_landing_screen.dart'; import '../screens/patient_screens/registration_screens/family_members_edit_screen.dart'; final Map routes = { RouteNames.launch: (context) => const LaunchScreen(), RouteNames.signIn: (context) => SignInScreen( providers: [EmailAuthProvider(), PhoneAuthProvider()], ), RouteNames.signUp: (context) => const RegisterScreen(), // RouteNames.userProfile: (context) { // var user = ModalRoute.of(context)!.settings.arguments as TelemedUser?; // return UserProfileScreen(user: user); // }, // RouteNames.userHome: (context) => const UserScreen(), RouteNames.profileUpload: (context) => const ProfileUploadPage(), RouteNames.patientLandingScreen: (context) => const PatientLandingScreen(), RouteNames.patientHomeScreen: (context) => const PatientHomeScreen(), RouteNames.doctorLandingScreen: (context) => const DoctorLandingScreen(), RouteNames.patientRegistrationScreen: (context) => const PatientRegistrationScreen(), RouteNames.qualificationsScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as DoctorController?; return QualificationsScreen( controller: controller ?? DoctorController(), // Provide fallback ); }, RouteNames.doctorAddressScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as DoctorController?; return DoctorAddressScreen( controller: controller ?? DoctorController(), // Provide fallback ); }, RouteNames.profileDescriptionScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as DoctorController?; return ProfileDescriptionScreen( controller: controller ?? DoctorController(), ); }, RouteNames.experienceScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as DoctorController?; return ExperienceScreen( controller: controller ?? DoctorController(), ); }, RouteNames.specialitiesScreeen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as DoctorController?; return SpecialitiesScreen( controller: controller ?? DoctorController(), ); }, RouteNames.digitalSignatureScreeen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as DoctorController?; return DigitalSignatureScreen( controller: controller ?? DoctorController(), ); }, RouteNames.achievementsScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as DoctorController?; return AchievementsScreen( controller: controller ?? DoctorController(), ); }, RouteNames.patientAdressScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as PatientController; return PatientAddressScreen(controller: controller); }, RouteNames.patientFamilyMembersScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as PatientController; return PatientFamilyMembersScreen(controller: controller); }, RouteNames.familyMembersEditScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as PatientController; return FamilyMembersEditScreen(controller: controller); }, RouteNames.patientprofileScreen: (context) => const PatientProfileScreen(), RouteNames.patientDashboardScreen: (context) => const PatientDashboardScreen(), RouteNames.specialityScreen: (context) => const SpecialtyScreen(), RouteNames.doctorListScreen: (context) { final args = ModalRoute.of(context)!.settings.arguments as Map; return DoctorsListScreen( specialty: args['specialty'] as String, ); }, RouteNames.doctorDetailsScreen: (context) { final args = ModalRoute.of(context)!.settings.arguments as Map; return DoctorDetailsScreen( doctor: args['doctor'] as Doctor, preloadedImage: args['imageProvider'] as ImageProvider?, ); }, RouteNames.consultationCenterScreen: (context) { final args = ModalRoute.of(context)!.settings.arguments as Map; return ConsultationsCenterScreen( doctor: args['doctor'] as Doctor, ); }, RouteNames.consultationTimeScreen: (context) { final args = ModalRoute.of(context)!.settings.arguments as Map; return ConsultationTimeScreen( doctor: args['doctor'] as Doctor, selectedConsultation: args['selectedConsultation'] as ConsultationCenter, ); }, RouteNames.consultationBookingScreen: (context) { final args = ModalRoute.of(context)!.settings.arguments as Map; return ConsultationBookingScreen( doctor: args['doctor'] as Doctor, selectedConsultation: args['selectedConsultation'] as ConsultationCenter, selectedDate: args['selectedDate'] as DateTime, selectedTime: args['selectedTime'] as String, ); }, RouteNames.doctorDashbordScreen: (context) => const DoctorDashboardScreen(), RouteNames.doctorHomeScreen: (context) => const DoctorDashboardHomeScreen(), RouteNames.doctorPersonalProfileScreen: (context) => const DoctorPersonalProfileScreen(), RouteNames.doctorServicesMenuScreen: (context) => const DoctorServicesMenuScreen(), RouteNames.scheduleConsultationScreen: (context) => const ScheduleConsultationScreen(), RouteNames.businessCenterScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as ConsultationCenterController?; return BusinessCenterScreen( controller: controller ?? ConsultationCenterController(), ); }, RouteNames.centerFeeAndDuration: (context) { final controller = ModalRoute.of(context)!.settings.arguments as ConsultationCenterController?; return CenterFeeAndDurationScreen( controller: controller ?? ConsultationCenterController(), ); }, RouteNames.consultationTimeSlotScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as ConsultationCenterController?; return ConsultationTimeSlotScreen( controller: controller ?? ConsultationCenterController(), selectedDay: '', ); }, RouteNames.consultationDayScreen: (context) { final controller = ModalRoute.of(context)!.settings.arguments as ConsultationCenterController?; return ConsultationDayScreen( controller: controller ?? ConsultationCenterController(), ); }, RouteNames.loadingScreen: (context) => const LoadingScreen(), RouteNames.splashScreen: (context) => const SplashScreen(), };