diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index da245da..19db982 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -525,7 +525,7 @@ "payOnline": "الدفع عبر الإنترنت", "cancelOrder": "إلغاء الطلب", "confirmAddress": "تأكيد العنوان ", - "confirmLocation": "��أكيد الموقع ", + "confirmLocation": "أكيد الموقع ", "conditionsHMG": "الشروط والأحكام ", "conditions": "الشروط والأحكام لكوم", "confirmDeleteMsg": "هل أنت متأكد! تريد الحذف ", @@ -1095,5 +1095,123 @@ "pickupFromHome": "الاستلام من المنزل", "onTheWayToHospital": " في الطريق إلى المستشفى", "arrivedAtHospital": "وصل إلى المستشفى", - "orderCancel": "إلغاء الطلب" + "orderCancel": "إلغاء الطلب", + "emergencyCheckIn": "تسجيل الطوارئ الإلكتروني", + "erOnlineCheckInDescription": "تتيح هذه الخدمة للمرضى تسجيل موعد الطوارئ قبل الوصول.", + "erOnlineCheckInSuccess": "تم تسجيل وصول الطوارئ بنجاح. الرجاء التوجه إلى منطقة الانتظار.", + "erOnlineCheckInError": "حدث خطأ غير متوقع أثناء عملية التسجيل. يرجى التواصل مع الدعم.", + "fetchingHospitalsList": "جاري جلب قائمة المستشفيات...", + "fetchingPaymentInformation": "جاري جلب معلومات الدفع...", + "erVisitDetails": "تفاصيل زيارة الطوارئ", + "erClinic": "عيادة الطوارئ", + "vatWithAmount": "الضريبة 15% ({amount})", + "erAppointmentBookedSuccess": "تم حجز موعدك بنجاح. يرجى إتمام إجراءات تسجيل الوصول عند وصولك إلى المستشفى.", + "underProcessing": "قيد المعالجة", + "canceledByPatient": "ملغى بواسطة المريض", + "rapidResponseTeam": "فريق الاستجابة السريع", + "allFacilities": "جميع المرافق", + "selectLocation": "اختر الموقع", + "pleaseSelectTheLocation": "يرجى اختيار الموقع", + "viewLocationGoogleMaps": "عرض الموقع على خرائط جوجل", + "callAmbulance": "استدعاء سيارة إسعاف", + "requestAmbulanceInEmergency": "طلب سيارة إسعاف في حالة الطوارئ من المنزل أو المستشفى", + "confirmation": "تأكيد", + "areYouSureYouWantToCallAmbulance": "هل أنت متأكد أنك تريد استدعاء سيارة إسعاف؟", + "getDetailsOfNearestBranch": "احصل على تفاصيل أقرب فرع بما في ذلك الاتجاهات", + "areYouSureYouWantToCallRRT": "هل أنت متأكد أنك تريد استدعاء فريق الاستجابة السريعة (RRT)؟", + "priorERCheckInToSkipLine": "تسجيل الوصول المسبق في الطوارئ لتجاوز الطابور والدفع في الاستقبال.", + "areYouSureYouWantToMakeERCheckIn": "هل أنت متأكد أنك تريد إجراء تسجيل وصول الطوارئ؟", + "checkingYourERAppointmentStatus": "جاري التحقق من حالة موعد الطوارئ الخاص بك...", + "transportOptions": "خيارات النقل", + "selectHospitalForAdvancePayment": "يرجى اختيار المستشفى الذي ترغب في دفع مبلغ مقدم له.", + "recharge": "إعادة الشحن", + "activityLevel": "مستوى النشاط", + "selectActivityLevel": "حدد مستوى النشاط", + "caloriesPerDay": "السعرات الحرارية في اليوم الواحد", + "dietType": "نوع النظام الغذائي", + "selectDietType": "حدد نوع النظام الغذائي", + "bodyFrameSize": "حجم إطار الجسم", + "selectBodyFrameSize": "حدد حجم إطار الجسم", + "averageCycleLength": "متوسط طول الدورة الشهرية (عادةً 28 يومًا)", + "averageLutealPhase": "متوسط طول المرحلة الأصفرية (عادةً 14 يومًا)", + "convert": "يتحول", + "calculate": "احسب", + "healthCalculators": "حاسبات الصحة", + "healthConverters": "محولات الصحة", + "generalHealth": "الصحة العامة", + "relatedToBMICalories": "متعلق بمؤشر كتلة الجسم والسعرات الحرارية ودهون الجسم وما إلى ذلك للبقاء على اطلاع دائم بصحتك.", + "selectCalculator": "اختر الآلة الحاسبة", + "womensHealth": "صحة المرأة", + "relatedToPeriodsOvulation": "متعلق بالدورة الشهرية والإباضة والحمل ومواضيع أخرى.", + "bloodSugar": "سكر الدم", + "trackYourGlucoseLevels": "تتبع مستويات الجلوكوز لديك، وفهم الاتجاهات، واحصل على رؤى مخصصة لصحة أفضل.", + "bloodCholesterol": "كوليسترول الدم", + "monitorCholesterolLevels": "راقب مستويات الكوليسترول، وقيّم مخاطر صحة القلب، واتخذ خطوات استباقية للرفاهية.", + "triglyceridesFatBlood": "الدهون الثلاثية في الدم", + "understandTriglyceridesImpact": "افهم تأثير الدهون الثلاثية على صحة القلب مع رؤى مخصصة وتوصيات الخبراء.", + "bmiCalculator": "حاسبة\nمؤشر كتلة الجسم", + "caloriesCalculator": "حاسبة\nالسعرات الحرارية", + "bmrCalculator": "حاسبة\nمعدل الأيض الأساسي", + "idealBodyWeight": "الوزن المثالي\nللجسم", + "bodyFatCalculator": "حاسبة\nدهون الجسم", + "carbsProteinFat": "الكربوهيدرات\nالبروتين والدهون", + "ovulationPeriod": "فترة\nالإباضة", + "deliveryDueDate": "تاريخ الولادة\nالمتوقع", + "low": "منخفض", + "preDiabetic": "ما قبل السكري", + "high": "مرتفع", + "elevated": "مرتفع قليلاً", + "recorded": "مسجل", + "noRecordsYet": "لا توجد سجلات بعد", + "lastRecord": "آخر سجل", + "addBloodSugar": "إضافة سكر الدم", + "addBloodPressure": "إضافة ضغط الدم", + "addWeight": "إضافة الوزن", + "bloodSugarDataSavedSuccessfully": "تم حفظ بيانات سكر الدم بنجاح", + "bloodPressureDataSavedSuccessfully": "تم حفظ بيانات ضغط الدم بنجاح", + "weightDataSavedSuccessfully": "تم حفظ بيانات الوزن بنجاح", + "pleaseWait": "يرجى الانتظار", + "selectUnit": "اختر الوحدة", + "selectMeasureTime": "اختر وقت القياس", + "selectArm": "اختر الذراع", + "enterBloodSugar": "أدخل سكر الدم", + "enterSystolicValue": "أدخل القيمة الانقباضية", + "enterDiastolicValue": "أدخل القيمة الانبساطية", + "enterWeight": "أدخل الوزن", + "selectDuration": "اختر المدة", + "systolic": "الانقباضي", + "diastolic": "الانبساطي", + "sendReportByEmail": "إرسال التقرير عبر البريد الإلكتروني", + "enterYourEmailToReceiveReport": "أدخل عنوان بريدك الإلكتروني لاستلام التقرير", + "addNewRecord": "إضافة سجل جديد", + "healthTrackers": "متتبعات الصحة", + "monitorBloodPressureLevels": "راقب مستويات ضغط الدم لديك، وتتبع القراءات الانقباضية والانبساطية، وحافظ على صحة قلبك.", + "trackWeightProgress": "تتبع تقدم وزنك، وضع الأهداف، وحافظ على كتلة جسم صحية من أجل العافية الشاملة.", + "bookAppointment": "حجز\nموعد", + "completeCheckup": "الفحص الشامل", + "indoorNavigation": "الملاحة الداخلية", + "eReferralServices": "خدمات الإحالة الإلكترونية", + "bloodDonation": "التبرع بالدم", + "dailyWaterMonitor": "مراقب الماء اليومي", + "fetchingYourWaterIntakeDetails": "جاري جلب تفاصيل استهلاك الماء الخاص بك.", + "healthCalculatorsServices": "حاسبات\nالصحة", + "healthConvertersServices": "محولات\nالصحة", + "smartWatchesServices": "الساعات\nالذكية", + "exploreServices": "استكشف الخدمات", + "medicalAndCareServices": "الخدمات الطبية والرعاية", + "hmgServices": "خدمات مجموعة الحبيب الطبية", + "personalServices": "الخدمات الشخصية", + "habibWallet": "محفظة الحبيب", + "loginToViewWalletBalance": "سجل الدخول لعرض رصيد محفظتك", + "recharge": "إعادة الشحن", + "loginToViewMedicalFile": "سجل الدخول لعرض ملفك الطبي", + "addMember": "إضافة عضو", + "addFamilyMember": "إضافة فرد من العائلة", + "pleaseFillBelowFieldToAddNewFamilyMember": "يرجى ملء الحقل أدناه لإضافة فرد جديد من العائلة إلى ملفك الشخصي", + "healthTools": "أدوات الصحة", + "supportServices": "خدمات الدعم", + "virtualTour": "جولة افتراضية", + "carParking": "موقف السيارات", + "latestNews": "آخر الأخبار", + "hmgContact": "اتصل بمجموعة الحبيب الطبية" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index f6500dc..ee489f5 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -1091,5 +1091,121 @@ "pickupFromHome": "Pickup Up from Home", "onTheWayToHospital": " On The Way To Hospital", "arrivedAtHospital": "Arrived at Hospital", - "orderCancel": "Order Cancel" + "orderCancel": "Order Cancel", + "emergencyCheckIn": "Emergency Check-In", + "erOnlineCheckInDescription": "This service lets patients register their ER appointment prior to arrival.", + "erOnlineCheckInSuccess": "Your ER Online Check-In has been successfully done. Please proceed to the waiting area.", + "erOnlineCheckInError": "Unexpected error occurred during check-in. Please contact support.", + "fetchingHospitalsList": "Fetching hospitals list...", + "fetchingPaymentInformation": "Fetching payment information...", + "erVisitDetails": "ER Visit Details", + "erClinic": "ER Clinic", + "vatWithAmount": "VAT 15% ({amount})", + "erAppointmentBookedSuccess": "Your appointment has been booked successfully. Please perform Check-In once you arrive at the hospital.", + "underProcessing": "Under processing", + "canceledByPatient": "Cancelled by patient", + "rapidResponseTeam": "Rapid Response Team", + "allFacilities": "All Facilities", + "selectLocation": "Select Location", + "pleaseSelectTheLocation": "Please select the location", + "viewLocationGoogleMaps": "View Location on Google Maps", + "callAmbulance": "Call Ambulance", + "requestAmbulanceInEmergency": "Request an ambulance in emergency from home or hospital", + "confirmation": "Confirmation", + "areYouSureYouWantToCallAmbulance": "Are you sure you want to call an ambulance?", + "getDetailsOfNearestBranch": "Get the details of nearest branch including directions", + "areYouSureYouWantToCallRRT": "Are you sure you want to call Rapid Response Team (RRT)?", + "priorERCheckInToSkipLine": "Prior ER Check-In to skip the line & payment at the reception.", + "areYouSureYouWantToMakeERCheckIn": "Are you sure you want to make ER Check-In?", + "checkingYourERAppointmentStatus": "Checking your ER Appointment status...", + "transportOptions": "Transport Options", + "selectHospitalForAdvancePayment": "Please select the hospital you want to make an advance payment for.", + "recharge": "Recharge", + "activityLevel": "Activity Level", + "selectActivityLevel": "Select Activity Level", + "caloriesPerDay": "Calories Per Day", + "dietType": "Diet Type", + "selectDietType": "Select Diet Type", + "bodyFrameSize": "Body Frame Size", + "selectBodyFrameSize": "Select Body Frame Size", + "averageCycleLength": "Average Cycle Length (Usually 28 days)", + "averageLutealPhase": "Average Luteal Phase Length(Usually 14 days)", + "convert": "Convert", + "calculate": "Calculate", + "healthCalculators": "Health Calculators", + "healthConverters": "Health Converters", + "generalHealth": "General Health", + "relatedToBMICalories": "Related To BMI, calories, body fat, etc to stay updated with your health.", + "selectCalculator": "Select Calculator", + "womensHealth": "Women's Health", + "relatedToPeriodsOvulation": "Related To periods, ovulation, pregnancy, and other topics.", + "bloodSugar": "Blood Sugar", + "trackYourGlucoseLevels": "Track your glucose levels, understand trends, and get personalized insights for better health.", + "bloodCholesterol": "Blood Cholesterol", + "monitorCholesterolLevels": "Monitor cholesterol levels, assess heart health risks, and take proactive steps for well-being.", + "triglyceridesFatBlood": "Triglycerides Fat Blood", + "understandTriglyceridesImpact": "Understand triglycerides' impact on heart health with personalized insights and expert recommendations.", + "bmiCalculator": "BMI\nCalculator", + "caloriesCalculator": "Calories\nCalculator", + "bmrCalculator": "BMR\nCalculator", + "idealBodyWeight": "Ideal Body\nWeight", + "bodyFatCalculator": "Body Fat\nCalculator", + "carbsProteinFat": "Carbs\nProtein & Fat", + "ovulationPeriod": "Ovulation\nPeriod", + "deliveryDueDate": "Delivery\nDue Date", + "low": "Low", + "preDiabetic": "Pre-diabetic", + "high": "High", + "elevated": "Elevated", + "recorded": "Recorded", + "noRecordsYet": "No records yet", + "lastRecord": "Last Record", + "addBloodSugar": "Add Blood Sugar", + "addBloodPressure": "Add Blood Pressure", + "addWeight": "Add Weight", + "bloodSugarDataSavedSuccessfully": "Blood Sugar Data saved successfully", + "bloodPressureDataSavedSuccessfully": "Blood Pressure Data saved successfully", + "weightDataSavedSuccessfully": "Weight Data saved successfully", + "pleaseWait": "Please wait", + "selectUnit": "Select Unit", + "selectMeasureTime": "Select Measure Time", + "selectArm": "Select Arm", + "enterBloodSugar": "Enter Blood Sugar", + "enterSystolicValue": "Enter Systolic Value", + "enterDiastolicValue": "Enter Diastolic Value", + "enterWeight": "Enter Weight", + "selectDuration": "Select Duration", + "systolic": "Systolic", + "diastolic": "Diastolic", + "sendReportByEmail": "Send Report by Email", + "enterYourEmailToReceiveReport": "Enter your email address to receive the report", + "addNewRecord": "Add new Record", + "healthTrackers": "Health Trackers", + "monitorBloodPressureLevels": "Monitor your blood pressure levels, track systolic and diastolic readings, and maintain a healthy heart.", + "trackWeightProgress": "Track your weight progress, set goals, and maintain a healthy body mass for overall wellness.", + "bookAppointment": "Book\nAppointment", + "completeCheckup": "Complete Checkup", + "indoorNavigation": "Indoor Navigation", + "eReferralServices": "E-Referral Services", + "dailyWaterMonitor": "Daily Water Monitor", + "fetchingYourWaterIntakeDetails": "Fetching your water intake details.", + "healthCalculatorsServices": "Health\nCalculators", + "healthConvertersServices": "Health\nConverters", + "smartWatchesServices": "Smart\nWatches", + "exploreServices": "Explore Services", + "medicalAndCareServices": "Medical & Care Services", + "hmgServices": "HMG Services", + "personalServices": "Personal Services", + "habibWallet": "Habib Wallet", + "loginToViewWalletBalance": "Login to view your wallet balance", + "loginToViewMedicalFile": "Login to view your medical file", + "addMember": "Add Member", + "addFamilyMember": "Add Family Member", + "pleaseFillBelowFieldToAddNewFamilyMember": "Please fill the below field to add a new family member to your profile", + "healthTools": "Health Tools", + "supportServices": "Support Services", + "virtualTour": "Virtual Tour", + "carParking": "Car Parking", + "latestNews": "Latest News", + "hmgContact": "HMG Contact" } \ No newline at end of file diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 50be532..bdd7984 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -679,7 +679,7 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart index 0763e8e..a1a04b5 100644 --- a/lib/core/dependencies.dart +++ b/lib/core/dependencies.dart @@ -166,13 +166,6 @@ class AppDependencies { ),); getIt.registerLazySingleton(() => MonthlyReportsRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => QrParkingRepoImp(loggerService: getIt(), apiClient: getIt())); - getIt.registerFactory( - () => QrParkingViewModel( - qrParkingRepo: getIt(), - errorHandlerService: getIt(), - cacheService: getIt(), - ), - ); getIt.registerLazySingleton(() => NotificationsRepoImp(loggerService: getIt(), apiClient: getIt())); // ViewModels diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 947bff4..309dde1 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -15,7 +15,7 @@ extension CapExtension on String { String get allInCaps => toUpperCase(); - // String get needTranslation => this; + String get needTranslation => this; String get capitalizeFirstofEach => trim().isNotEmpty ? trim().toLowerCase().split(" ").map((str) => str.inCaps).join(" ") : ""; } diff --git a/lib/features/my_appointments/my_appointments_view_model.dart b/lib/features/my_appointments/my_appointments_view_model.dart index 3934bf7..96340a7 100644 --- a/lib/features/my_appointments/my_appointments_view_model.dart +++ b/lib/features/my_appointments/my_appointments_view_model.dart @@ -281,9 +281,9 @@ class MyAppointmentsViewModel extends ChangeNotifier { } } - print('Upcoming Appointments: ${patientUpcomingAppointmentsHistoryList.length}'); - print('Arrived Appointments: ${patientArrivedAppointmentsHistoryList.length}'); - print('All Appointments: ${patientAppointmentsHistoryList.length}'); + debugPrint('Upcoming Appointments: ${patientUpcomingAppointmentsHistoryList.length}'); + debugPrint('Arrived Appointments: ${patientArrivedAppointmentsHistoryList.length}'); + debugPrint('All Appointments: ${patientAppointmentsHistoryList.length}'); getFiltersForSelectedAppointmentList(filteredAppointmentList); notifyListeners(); } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index fcc0257..689587c 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -1092,5 +1092,121 @@ abstract class LocaleKeys { static const onTheWayToHospital = 'onTheWayToHospital'; static const arrivedAtHospital = 'arrivedAtHospital'; static const orderCancel = 'orderCancel'; + static const emergencyCheckIn = 'emergencyCheckIn'; + static const erOnlineCheckInDescription = 'erOnlineCheckInDescription'; + static const erOnlineCheckInSuccess = 'erOnlineCheckInSuccess'; + static const erOnlineCheckInError = 'erOnlineCheckInError'; + static const fetchingHospitalsList = 'fetchingHospitalsList'; + static const fetchingPaymentInformation = 'fetchingPaymentInformation'; + static const erVisitDetails = 'erVisitDetails'; + static const erClinic = 'erClinic'; + static const vatWithAmount = 'vatWithAmount'; + static const erAppointmentBookedSuccess = 'erAppointmentBookedSuccess'; + static const underProcessing = 'underProcessing'; + static const canceledByPatient = 'canceledByPatient'; + static const rapidResponseTeam = 'rapidResponseTeam'; + static const allFacilities = 'allFacilities'; + static const selectLocation = 'selectLocation'; + static const pleaseSelectTheLocation = 'pleaseSelectTheLocation'; + static const viewLocationGoogleMaps = 'viewLocationGoogleMaps'; + static const callAmbulance = 'callAmbulance'; + static const requestAmbulanceInEmergency = 'requestAmbulanceInEmergency'; + static const confirmation = 'confirmation'; + static const areYouSureYouWantToCallAmbulance = 'areYouSureYouWantToCallAmbulance'; + static const getDetailsOfNearestBranch = 'getDetailsOfNearestBranch'; + static const areYouSureYouWantToCallRRT = 'areYouSureYouWantToCallRRT'; + static const priorERCheckInToSkipLine = 'priorERCheckInToSkipLine'; + static const areYouSureYouWantToMakeERCheckIn = 'areYouSureYouWantToMakeERCheckIn'; + static const checkingYourERAppointmentStatus = 'checkingYourERAppointmentStatus'; + static const transportOptions = 'transportOptions'; + static const selectHospitalForAdvancePayment = 'selectHospitalForAdvancePayment'; + static const recharge = 'recharge'; + static const activityLevel = 'activityLevel'; + static const selectActivityLevel = 'selectActivityLevel'; + static const caloriesPerDay = 'caloriesPerDay'; + static const dietType = 'dietType'; + static const selectDietType = 'selectDietType'; + static const bodyFrameSize = 'bodyFrameSize'; + static const selectBodyFrameSize = 'selectBodyFrameSize'; + static const averageCycleLength = 'averageCycleLength'; + static const averageLutealPhase = 'averageLutealPhase'; + static const convert = 'convert'; + static const calculate = 'calculate'; + static const healthCalculators = 'healthCalculators'; + static const healthConverters = 'healthConverters'; + static const generalHealth = 'generalHealth'; + static const relatedToBMICalories = 'relatedToBMICalories'; + static const selectCalculator = 'selectCalculator'; + static const womensHealth = 'womensHealth'; + static const relatedToPeriodsOvulation = 'relatedToPeriodsOvulation'; + static const bloodSugar = 'bloodSugar'; + static const trackYourGlucoseLevels = 'trackYourGlucoseLevels'; + static const bloodCholesterol = 'bloodCholesterol'; + static const monitorCholesterolLevels = 'monitorCholesterolLevels'; + static const triglyceridesFatBlood = 'triglyceridesFatBlood'; + static const understandTriglyceridesImpact = 'understandTriglyceridesImpact'; + static const bmiCalculator = 'bmiCalculator'; + static const caloriesCalculator = 'caloriesCalculator'; + static const bmrCalculator = 'bmrCalculator'; + static const idealBodyWeight = 'idealBodyWeight'; + static const bodyFatCalculator = 'bodyFatCalculator'; + static const carbsProteinFat = 'carbsProteinFat'; + static const ovulationPeriod = 'ovulationPeriod'; + static const deliveryDueDate = 'deliveryDueDate'; + static const low = 'low'; + static const preDiabetic = 'preDiabetic'; + static const high = 'high'; + static const elevated = 'elevated'; + static const recorded = 'recorded'; + static const noRecordsYet = 'noRecordsYet'; + static const lastRecord = 'lastRecord'; + static const addBloodSugar = 'addBloodSugar'; + static const addBloodPressure = 'addBloodPressure'; + static const addWeight = 'addWeight'; + static const bloodSugarDataSavedSuccessfully = 'bloodSugarDataSavedSuccessfully'; + static const bloodPressureDataSavedSuccessfully = 'bloodPressureDataSavedSuccessfully'; + static const weightDataSavedSuccessfully = 'weightDataSavedSuccessfully'; + static const pleaseWait = 'pleaseWait'; + static const selectUnit = 'selectUnit'; + static const selectMeasureTime = 'selectMeasureTime'; + static const selectArm = 'selectArm'; + static const enterBloodSugar = 'enterBloodSugar'; + static const enterSystolicValue = 'enterSystolicValue'; + static const enterDiastolicValue = 'enterDiastolicValue'; + static const enterWeight = 'enterWeight'; + static const selectDuration = 'selectDuration'; + static const systolic = 'systolic'; + static const diastolic = 'diastolic'; + static const sendReportByEmail = 'sendReportByEmail'; + static const enterYourEmailToReceiveReport = 'enterYourEmailToReceiveReport'; + static const addNewRecord = 'addNewRecord'; + static const healthTrackers = 'healthTrackers'; + static const monitorBloodPressureLevels = 'monitorBloodPressureLevels'; + static const trackWeightProgress = 'trackWeightProgress'; + static const bookAppointment = 'bookAppointment'; + static const completeCheckup = 'completeCheckup'; + static const indoorNavigation = 'indoorNavigation'; + static const eReferralServices = 'eReferralServices'; + static const dailyWaterMonitor = 'dailyWaterMonitor'; + static const fetchingYourWaterIntakeDetails = 'fetchingYourWaterIntakeDetails'; + static const healthCalculatorsServices = 'healthCalculatorsServices'; + static const healthConvertersServices = 'healthConvertersServices'; + static const smartWatchesServices = 'smartWatchesServices'; + static const exploreServices = 'exploreServices'; + static const medicalAndCareServices = 'medicalAndCareServices'; + static const hmgServices = 'hmgServices'; + static const personalServices = 'personalServices'; + static const habibWallet = 'habibWallet'; + static const loginToViewWalletBalance = 'loginToViewWalletBalance'; + static const loginToViewMedicalFile = 'loginToViewMedicalFile'; + static const addMember = 'addMember'; + static const addFamilyMember = 'addFamilyMember'; + static const pleaseFillBelowFieldToAddNewFamilyMember = 'pleaseFillBelowFieldToAddNewFamilyMember'; + static const healthTools = 'healthTools'; + static const supportServices = 'supportServices'; + static const virtualTour = 'virtualTour'; + static const carParking = 'carParking'; + static const latestNews = 'latestNews'; + static const hmgContact = 'hmgContact'; } diff --git a/lib/presentation/emergency_services/RRT/rrt_map_screen.dart b/lib/presentation/emergency_services/RRT/rrt_map_screen.dart index afe68b6..530152b 100644 --- a/lib/presentation/emergency_services/RRT/rrt_map_screen.dart +++ b/lib/presentation/emergency_services/RRT/rrt_map_screen.dart @@ -1,4 +1,3 @@ - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -135,19 +134,19 @@ class RrtMapScreen extends StatelessWidget { Column( spacing: 4.h, children: [ - "Select Location".needTranslation.toText21( + LocaleKeys.selectLocation.tr().toText21( weight: FontWeight.w600, color: AppColors.textColor, ), - "Please select the location".needTranslation.toText12( + LocaleKeys.pleaseSelectTheLocation.tr().toText12( fontWeight: FontWeight.w500, color: AppColors.greyTextColor, ) ], ), CustomButton( - text: "Submit Request".needTranslation, - onPressed: () { + text: LocaleKeys.submitRequest.tr(), + onPressed: () { LocationViewModel locationViewModel = context.read(); GeocodeResponse? response = locationViewModel.geocodeResponse; PlaceDetails? placeDetails = locationViewModel.placeDetails; @@ -235,7 +234,7 @@ class RrtMapScreen extends StatelessWidget { height: 40.h, backgroundColor: AppColors.lightRedButtonColor, borderColor: Colors.transparent, - text: "Add new address".needTranslation, + text: LocaleKeys.addNewAddress.tr(), textColor: AppColors.primaryRedColor, iconColor: AppColors.primaryRedColor, onPressed: () {}, @@ -245,9 +244,7 @@ class RrtMapScreen extends StatelessWidget { isSelected: index == 0, address: "Flat No 301, Building No 12, Palm Spring Apartment, Sector 45, Gurugram, Haryana 122003", - title: index == 0 - ? "Home".needTranslation - : "Work".needTranslation, + title: index == 0 ? LocaleKeys.home.tr() : LocaleKeys.work.tr(), onTap: () {}, ); } @@ -291,8 +288,8 @@ class RrtMapScreen extends StatelessWidget { Row( children: [ hospitalAndPickUpItemContent( - title: "Pick".needTranslation, - subTitle: "Inside the home".needTranslation, + title: LocaleKeys.pick.tr(), + subTitle: LocaleKeys.insideTheHome.tr(), leadingIcon: AppAssets.pickup_bed, ), CustomSwitch( @@ -312,7 +309,7 @@ class RrtMapScreen extends StatelessWidget { children: [ hospitalAndPickUpItemContent( title: '', - subTitle: "Have any appointment".needTranslation, + subTitle: LocaleKeys.haveAnyAppointment.tr(), leadingIcon: AppAssets.appointment_checkin_icon, ), CustomSwitch( @@ -416,8 +413,8 @@ class RrtMapScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, spacing: 4.h, children: [ - "Total amount to pay".needTranslation.toText18( - weight: FontWeight.w600, + LocaleKeys.totalAmountToPay.tr().toText18( + weight: FontWeight.w600, color: AppColors.textColor, ), Row( @@ -425,9 +422,7 @@ class RrtMapScreen extends StatelessWidget { Utils.buildSvgWithAssets(icon: AppAssets.warning, height: 18.h, width: 18.h), SizedBox(width: 4.h,), - "Amount will be paid at the hospital" - .needTranslation - .toText12( + LocaleKeys.amountPaidAtHospital.tr().toText12( fontWeight: FontWeight.w500, color: AppColors.greyTextColor, ), @@ -452,7 +447,7 @@ class RrtMapScreen extends StatelessWidget { ], ), CustomButton( - text: "Submit Request".needTranslation, + text: LocaleKeys.submitRequest.tr(), onPressed: () { LocationViewModel locationViewModel = context.read(); GeocodeResponse? response = locationViewModel.geocodeResponse; @@ -530,8 +525,8 @@ class RrtMapScreen extends StatelessWidget { return SizedBox( width: MediaQuery.sizeOf(context).width, child: TextInputWidget( - labelText: "Enter Pickup Location Manually".needTranslation, - hintText: "Enter Pickup Location".needTranslation, + labelText: LocaleKeys.enterPickupLocationManually.tr(), + hintText: LocaleKeys.enterPickupLocation.tr(), controller: TextEditingController( text: vm.geocodeResponse?.results.first.formattedAddress ?? vm.selectedPrediction?.description, @@ -562,7 +557,7 @@ class RrtMapScreen extends StatelessWidget { openLocationInputBottomSheet(BuildContext context) { context.read().flushSearchPredictions(); showCommonBottomSheetWithoutHeight( - title: "".needTranslation, + title: "", context, child: SizedBox( height: MediaQuery.sizeOf(context).height * .8, @@ -583,11 +578,10 @@ class RrtMapScreen extends StatelessWidget { child: Row( children: [ hospitalAndPickUpItemContent( - title: "Select Hospital".needTranslation, + title: "Select Hospital".tr(), subTitle: context .read() - .getSelectedHospitalName() ?? - "Select Hospital".needTranslation, + .getSelectedHospitalName() ?? "Select Hospital".tr(), leadingIcon: AppAssets.hospital, ), Utils.buildSvgWithAssets( @@ -606,7 +600,7 @@ class RrtMapScreen extends StatelessWidget { void openAppointmentList(BuildContext context) { showCommonBottomSheetWithoutHeight( - title: "Select Appointment".needTranslation, + title: LocaleKeys.selectAppointment.tr(), context, child: SizedBox( height: MediaQuery.sizeOf(context).height * .5, diff --git a/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart b/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart index 13e0106..91db0de 100644 --- a/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart +++ b/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart @@ -18,12 +18,11 @@ class RrtRequestTypeSelect extends StatelessWidget { @override Widget build(BuildContext context) { return Consumer(builder: (context, emergencyServicesVM, child) { - print("the checkbox is ${emergencyServicesVM.agreedToTermsAndCondition}"); return Column( children: [ Column( children: [ - "Rapid Response Team (RRT) options".needTranslation.toText20(color: AppColors.textColor, isBold: true), + LocaleKeys.rapidResponseTeam.tr(context: context).toText20(color: AppColors.textColor, isBold: true), SizedBox( height: 16.h, ), @@ -74,7 +73,7 @@ class RrtRequestTypeSelect extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Total amount to pay".needTranslation.toText18( + LocaleKeys.totalAmountToPay.tr(context: context).toText18( weight: FontWeight.w600, color: AppColors.textColor, ), @@ -94,19 +93,19 @@ class RrtRequestTypeSelect extends StatelessWidget { SizedBox( width: 4.h, ), - "Amount will be paid at the hospital".needTranslation.toText11( + LocaleKeys.amountPaidAtHospital.tr(context: context).toText11( color: AppColors.greyTextColor, ), ], ), Row( children: [ - "+ VAT 15%(".needTranslation.toText12( + LocaleKeys.vat15.tr(context: context).toText12( fontWeight: FontWeight.w500, color: AppColors.greyTextColor, ), - "${emergencyServicesVM.selectedRRTProcedure?.patientTaxAmount})".needTranslation.toText14( - weight: FontWeight.w600, + "${emergencyServicesVM.selectedRRTProcedure?.patientTaxAmount})".toText14( + weight: FontWeight.w600, color: AppColors.greyTextColor, ), ], diff --git a/lib/presentation/emergency_services/RRT/terms_and_condition.dart b/lib/presentation/emergency_services/RRT/terms_and_condition.dart index 1d1dac1..bd0d6fd 100644 --- a/lib/presentation/emergency_services/RRT/terms_and_condition.dart +++ b/lib/presentation/emergency_services/RRT/terms_and_condition.dart @@ -1,8 +1,10 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_widget_from_html/flutter_widget_from_html.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -18,7 +20,7 @@ class TermsAndCondition extends StatelessWidget { Expanded( child: CollapsingListView( - title: "Terms And Condition".needTranslation, + title: LocaleKeys.termsConditoins.tr(context: context), child:DecoratedBox(decoration:RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 20.h, diff --git a/lib/presentation/emergency_services/emergency_services_page.dart b/lib/presentation/emergency_services/emergency_services_page.dart index 3833d32..a5281ca 100644 --- a/lib/presentation/emergency_services/emergency_services_page.dart +++ b/lib/presentation/emergency_services/emergency_services_page.dart @@ -59,9 +59,8 @@ class EmergencyServicesPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Call Ambulance".needTranslation.toText16(isBold: true, color: AppColors.blackColor), - "Request an ambulance in emergency from home or hospital" - .needTranslation + LocaleKeys.callAmbulance.tr().toText16(isBold: true, color: AppColors.blackColor), + LocaleKeys.requestAmbulanceInEmergency.tr() .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), ], ), @@ -100,10 +99,9 @@ class EmergencyServicesPage extends StatelessWidget { Lottie.asset(AppAnimations.ambulanceAlert, repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), SizedBox(height: 8.h), - "Confirmation".needTranslation.toText28(color: AppColors.whiteColor, isBold: true), + LocaleKeys.confirmation.tr().toText28(color: AppColors.whiteColor, isBold: true), SizedBox(height: 8.h), - "Are you sure you want to call an ambulance?" - .needTranslation + LocaleKeys.areYouSureYouWantToCallAmbulance.tr() .toText14(color: AppColors.whiteColor, weight: FontWeight.w500), SizedBox(height: 24.h), CustomButton( @@ -148,9 +146,8 @@ class EmergencyServicesPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Nearest ER Location".needTranslation.toText16(isBold: true, color: AppColors.blackColor), - "Get the details of nearest branch including directions" - .needTranslation + LocaleKeys.nearester.tr(context: context).toText16(isBold: true, color: AppColors.blackColor), + LocaleKeys.getDetailsOfNearestBranch.tr() .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), ], ), @@ -178,7 +175,7 @@ class EmergencyServicesPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Rapid Response Team (RRT)".toText16(isBold: true, color: AppColors.blackColor), + LocaleKeys.rapidResponseTeam.tr(context: context).toText16(isBold: true, color: AppColors.blackColor), "Comprehensive medical service for all sorts of urgent and stable cases" .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), ], @@ -204,8 +201,7 @@ class EmergencyServicesPage extends StatelessWidget { SizedBox(height: 8.h), LocaleKeys.confirm.tr().toText28(color: AppColors.whiteColor, isBold: true), SizedBox(height: 8.h), - "Are you sure you want to call Rapid Response Team (RRT)?" - .needTranslation + LocaleKeys.areYouSureYouWantToCallRRT.tr() .toText14(color: AppColors.whiteColor, weight: FontWeight.w500), SizedBox(height: 24.h), CustomButton( @@ -278,9 +274,8 @@ class EmergencyServicesPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Emergency Check-In".needTranslation.toText16(isBold: true, color: AppColors.blackColor), - "Prior ER Check-In to skip the line & payment at the reception." - .needTranslation + LocaleKeys.emergencyCheckIn.tr(context: context).toText16(isBold: true, color: AppColors.blackColor), + LocaleKeys.priorERCheckInToSkipLine.tr() .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), ], ), @@ -318,13 +313,13 @@ class EmergencyServicesPage extends StatelessWidget { SizedBox(height: 8.h), LocaleKeys.confirm.tr().toText28(color: AppColors.whiteColor, isBold: true), SizedBox(height: 8.h), - "Are you sure you want to make ER Check-In?".needTranslation.toText14(color: AppColors.whiteColor, weight: FontWeight.w500), + LocaleKeys.areYouSureYouWantToMakeERCheckIn.tr().toText14(color: AppColors.whiteColor, weight: FontWeight.w500), SizedBox(height: 24.h), CustomButton( text: LocaleKeys.confirm.tr(context: context), onPressed: () async { Navigator.of(context).pop(); - LoaderBottomSheet.showLoader(loadingText: "Checking your ER Appointment status...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingYourERAppointmentStatus.tr()); await context.read().checkPatientERAdvanceBalance(onSuccess: (dynamic response) { LoaderBottomSheet.hideLoader(); context.read().navigateToEROnlineCheckIn(); @@ -389,7 +384,7 @@ class EmergencyServicesPage extends StatelessWidget { void openTranportationSelectionBottomSheet(BuildContext context) { if (emergencyServicesViewModel.transportationOptions.isNotEmpty) { showCommonBottomSheetWithoutHeight( - title: "Transport Options".needTranslation, + title: LocaleKeys.transportOptions.tr(), context, child: SizedBox( height: 400.h, diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart index ee061b7..3850c1f 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart @@ -38,7 +38,7 @@ class ErOnlineCheckinHome extends StatelessWidget { children: [ Expanded( child: CollapsingListView( - title: "Emergency Check-In".needTranslation, + title: LocaleKeys.emergencyCheckIn.tr(context: context), child: SingleChildScrollView( child: Padding( padding: EdgeInsets.all(24.h), @@ -53,8 +53,8 @@ class ErOnlineCheckinHome extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Online Check-In".needTranslation.toText18(color: AppColors.textColor, isBold: true), - "This service lets patients to register their ER appointment prior to arrival.".needTranslation.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.onlineCheckIn.tr().toText18(color: AppColors.textColor, isBold: true), + LocaleKeys.erOnlineCheckInDescription.tr().toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), ), @@ -74,7 +74,7 @@ class ErOnlineCheckinHome extends StatelessWidget { showNfcReader(context, onNcfScan: (String nfcId) { Future.delayed(const Duration(milliseconds: 100), () async { print(nfcId); - LoaderBottomSheet.showLoader(loadingText: "Processing check-in...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.processingCheckIn.tr()); await emergencyServicesViewModel.getProjectIDFromNFC( nfcCode: nfcId, onSuccess: (value) async { @@ -84,7 +84,7 @@ class ErOnlineCheckinHome extends StatelessWidget { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.onlineCheckIn.tr(), - child: Utils.getSuccessWidget(loadingText: "Your ER Online Check-In has been successfully done. Please proceed to the waiting area.".needTranslation), + child: Utils.getSuccessWidget(loadingText: LocaleKeys.erOnlineCheckInSuccess.tr()), callBackFunc: () { Navigator.pushAndRemoveUntil( context, @@ -98,7 +98,7 @@ class ErOnlineCheckinHome extends StatelessWidget { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Unexpected error occurred during check-in. Please contact support.".needTranslation), + child: Utils.getErrorWidget(loadingText: LocaleKeys.erOnlineCheckInError.tr()), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -117,7 +117,7 @@ class ErOnlineCheckinHome extends StatelessWidget { // callBackFunc: () {}, // isFullScreen: false); } else { - LoaderBottomSheet.showLoader(loadingText: "Fetching hospitals list...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingHospitalsList.tr()); await context.read().getProjects(); LoaderBottomSheet.hideLoader(); //Project Selection Dropdown @@ -155,7 +155,7 @@ class ErOnlineCheckinHome extends StatelessWidget { onHospitalClicked: (hospital) async { Navigator.pop(context); vm.setSelectedHospital(hospital); - LoaderBottomSheet.showLoader(loadingText: "Fetching payment information...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); await vm.getPatientERPaymentInformation(onSuccess: (response) { LoaderBottomSheet.hideLoader(); vm.navigateToEROnlineCheckInPaymentPage(); diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart index f48efe7..0534854 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart @@ -34,7 +34,7 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { children: [ Expanded( child: CollapsingListView( - title: "Emergency Check-In".needTranslation, + title: LocaleKeys.emergencyCheckIn.tr(context: context), child: SingleChildScrollView( child: Padding( padding: EdgeInsets.all(24.h), @@ -52,7 +52,7 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "ER Visit Details".needTranslation.toText18(color: AppColors.textColor, isBold: true), + LocaleKeys.erVisitDetails.tr().toText18(color: AppColors.textColor, isBold: true), SizedBox(height: 24.h), Row( children: [ @@ -70,7 +70,7 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), AppCustomChipWidget( - labelText: "ER Clinic".needTranslation, + labelText: LocaleKeys.erClinic.tr(), labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), AppCustomChipWidget( @@ -111,7 +111,7 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Amount before tax".needTranslation.toText18(isBold: true), + LocaleKeys.amountBeforeTax.tr().toText18(isBold: true), Utils.getPaymentAmountWithSymbol(emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShare.toString().toText16(isBold: true), AppColors.blackColor, 13, isSaudiCurrency: true), ], @@ -121,8 +121,8 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded(child: "".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor)), - "VAT 15% (${emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientTaxAmount})" - .needTranslation + LocaleKeys.vatWithAmount + .tr(namedArgs: {"amount": emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientTaxAmount.toString()}) .toText14(isBold: true, color: AppColors.greyTextColor, letterSpacing: -1), ], ), diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart index 8de7518..70a5b08 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart @@ -80,7 +80,7 @@ class _ErOnlineCheckinPaymentPageState extends State children: [ Expanded( child: CollapsingListView( - title: "Emergency Check-In".needTranslation, + title: LocaleKeys.emergencyCheckIn.tr(context: context), child: SingleChildScrollView( child: Column( children: [ @@ -99,7 +99,7 @@ class _ErOnlineCheckinPaymentPageState extends State children: [ Image.asset(AppAssets.mada, width: 72.h, height: 25.h), SizedBox(height: 16.h), - "Mada".needTranslation.toText16(isBold: true), + LocaleKeys.mada.tr(context: context).toText16(isBold: true), ], ), SizedBox(width: 8.h), @@ -141,7 +141,7 @@ class _ErOnlineCheckinPaymentPageState extends State ], ), SizedBox(height: 16.h), - "Visa or Mastercard".needTranslation.toText16(isBold: true), + LocaleKeys.visaOrMastercard.tr(context: context).toText16(isBold: true), ], ), SizedBox(width: 8.h), @@ -178,7 +178,7 @@ class _ErOnlineCheckinPaymentPageState extends State children: [ Image.asset(AppAssets.tamaraEng, width: 72.h, height: 25.h), SizedBox(height: 16.h), - "Tamara".needTranslation.toText16(isBold: true), + LocaleKeys.tamara.tr(context: context).toText16(isBold: true), ], ), SizedBox(width: 8.h), @@ -229,8 +229,8 @@ class _ErOnlineCheckinPaymentPageState extends State child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Insurance expired or inactive".needTranslation.toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500).paddingSymmetrical(24.h, 0.h), - CustomButton( + LocaleKeys.insuranceExpiredOrInactive.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500).paddingSymmetrical(24.h, 0.h), + CustomButton( text: LocaleKeys.updateInsurance.tr(context: context), onPressed: () { Navigator.of(context).push( @@ -253,12 +253,12 @@ class _ErOnlineCheckinPaymentPageState extends State ) : const SizedBox(), SizedBox(height: 24.h), - "Total amount to pay".needTranslation.toText18(isBold: true).paddingSymmetrical(24.h, 0.h), + LocaleKeys.totalAmountToPay.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Amount before tax".needTranslation.toText14(isBold: true), + LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol(emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShare.toString().toText16(isBold: true), AppColors.blackColor, 13, isSaudiCurrency: true), ], @@ -266,7 +266,7 @@ class _ErOnlineCheckinPaymentPageState extends State Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "VAT 15%".needTranslation.toText14(isBold: true, color: AppColors.greyTextColor), + LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), Utils.getPaymentAmountWithSymbol( emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientTaxAmount.toString().toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, isSaudiCurrency: true), @@ -276,7 +276,7 @@ class _ErOnlineCheckinPaymentPageState extends State Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "".needTranslation.toText14(isBold: true), + "".toText14(isBold: true), Utils.getPaymentAmountWithSymbol(emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShareWithTax.toString().toText24(isBold: true), AppColors.blackColor, 17, isSaudiCurrency: true), ], @@ -425,7 +425,7 @@ class _ErOnlineCheckinPaymentPageState extends State } void checkPaymentStatus() async { - LoaderBottomSheet.showLoader(loadingText: "Checking payment status, Please wait...".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); await payfortViewModel.checkPaymentStatus( transactionID: transID, onSuccess: (apiResponse) async { @@ -445,7 +445,7 @@ class _ErOnlineCheckinPaymentPageState extends State if (emergencyServicesViewModel.isERBookAppointment) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getSuccessWidget(loadingText: "Your appointment has been booked successfully. Please perform Check-In once you arrive at the hospital.".needTranslation), + child: Utils.getSuccessWidget(loadingText: LocaleKeys.erAppointmentBookedSuccess.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -458,7 +458,7 @@ class _ErOnlineCheckinPaymentPageState extends State LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Payment Failed! Please try again.".needTranslation), + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart index d44686c..3b2dc8a 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_nfc_kit/flutter_nfc_kit.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:barcode_scan2/barcode_scan2.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; @@ -35,8 +37,8 @@ class ErOnlineCheckinSelectCheckinBottomSheet extends StatelessWidget { children: [ checkInOptionCard( AppAssets.checkin_location_icon, - "Live Location".needTranslation, - "Verify your location to be at hospital to check in".needTranslation, + LocaleKeys.liveLocation.tr(context: context), + LocaleKeys.verifyYourLocationAtHospital.tr(context: context), ).onPress(() { // locationUtils = LocationUtils( // isShowConfirmDialog: false, @@ -51,8 +53,8 @@ class ErOnlineCheckinSelectCheckinBottomSheet extends StatelessWidget { sendCheckInRequest(projectDetailListModel.checkInQrCode!, context); } else { showCommonBottomSheetWithoutHeight(context, - title: "Error".needTranslation, - child: Utils.getErrorWidget(loadingText: "Please ensure you're within the hospital location to perform online check-in.".needTranslation), callBackFunc: () { + title: LocaleKeys.error.tr(context: context), + child: Utils.getErrorWidget(loadingText: LocaleKeys.ensureWithinHospitalLocation.tr(context: context),), callBackFunc: () { Navigator.of(context).pop(); }, isFullScreen: false); } @@ -61,8 +63,8 @@ class ErOnlineCheckinSelectCheckinBottomSheet extends StatelessWidget { SizedBox(height: 16.h), checkInOptionCard( AppAssets.checkin_nfc_icon, - "NFC (Near Field Communication)".needTranslation, - "Scan your phone via NFC board to check in".needTranslation, + LocaleKeys.nfcNearFieldCommunication.tr(context: context), + LocaleKeys.scanPhoneViaNFC.tr(context: context), ).onPress(() { Future.delayed(const Duration(milliseconds: 500), () { showNfcReader(context, onNcfScan: (String nfcId) { @@ -75,8 +77,8 @@ class ErOnlineCheckinSelectCheckinBottomSheet extends StatelessWidget { SizedBox(height: 16.h), checkInOptionCard( AppAssets.checkin_qr_icon, - "QR Code".needTranslation, - "Scan QR code with your camera to check in".needTranslation, + LocaleKeys.qrCode.tr(context: context), + LocaleKeys.scanQRCodeToCheckIn.tr(context: context), ).onPress(() async { String onlineCheckInQRCode = (await BarcodeScanner.scan().then((value) => value.rawContent)); if (onlineCheckInQRCode != "") { diff --git a/lib/presentation/emergency_services/history/er_history_listing.dart b/lib/presentation/emergency_services/history/er_history_listing.dart index fe1ed31..a60d455 100644 --- a/lib/presentation/emergency_services/history/er_history_listing.dart +++ b/lib/presentation/emergency_services/history/er_history_listing.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart' show AppAssets; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -8,6 +9,7 @@ import 'package:hmg_patient_app_new/features/emergency_services/emergency_servic import 'package:hmg_patient_app_new/features/emergency_services/models/OrderDisplay.dart'; import 'package:hmg_patient_app_new/features/emergency_services/models/resp_model/AmbulanceRequestOrdersModel.dart'; import 'package:hmg_patient_app_new/features/emergency_services/models/resp_model/RRTServiceData.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/history/widget/ambulance_history_item.dart' show AmbulanceHistoryItem; import 'package:hmg_patient_app_new/presentation/emergency_services/history/widget/rrt_item.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -24,7 +26,7 @@ class ErHistoryListing extends StatelessWidget { Expanded( child: CollapsingListView( - title: "History Log".needTranslation, + title: LocaleKeys.history.tr(context: context), child: SingleChildScrollView( physics: NeverScrollableScrollPhysics(), child: Column( @@ -55,12 +57,10 @@ class ErHistoryListing extends StatelessWidget { }), ), Visibility( - visible: data.$1 - ?.isEmpty == true, child: Center( - child: Utils.getNoDataWidget(context, - noDataText: "You don't have any history" - .needTranslation), - )), + visible: data.$1.isEmpty == true, + child: Center( + child: Utils.getNoDataWidget(context, noDataText: LocaleKeys.noDataAvailable.tr(context: context)), + )), ], ); } @@ -92,9 +92,9 @@ class ErHistoryListing extends StatelessWidget { return Row( spacing: 8.h, children: [ - if(dataList?.isNotEmpty == true) + if(dataList.isNotEmpty == true) AppCustomChipWidget( - labelText: "All Facilities".needTranslation, + labelText: LocaleKeys.allFacilities.tr(context: context), shape: RoundedRectangleBorder( side: BorderSide( color: value == OrderDislpay.ALL ? AppColors.errorColor : AppColors.chipBorderColorOpacity20, @@ -111,7 +111,7 @@ class ErHistoryListing extends StatelessWidget { .ambulanceOrders ?.isNotEmpty == true) AppCustomChipWidget( - labelText: "Ambulance".needTranslation, + labelText: LocaleKeys.ambulancerequest.tr(context: context), icon: AppAssets.ambulance, shape: RoundedRectangleBorder( side: BorderSide( @@ -130,7 +130,7 @@ class ErHistoryListing extends StatelessWidget { ?.completedOrders .isNotEmpty == true) AppCustomChipWidget( - labelText: "Rapid Response Team".needTranslation, + labelText: LocaleKeys.rapidResponseTeam.tr(context: context), icon: AppAssets.ic_rrt_vehicle, shape: RoundedRectangleBorder( side: BorderSide( diff --git a/lib/presentation/emergency_services/history/widget/RequestStatus.dart b/lib/presentation/emergency_services/history/widget/RequestStatus.dart index 4f39a49..849565a 100644 --- a/lib/presentation/emergency_services/history/widget/RequestStatus.dart +++ b/lib/presentation/emergency_services/history/widget/RequestStatus.dart @@ -1,8 +1,9 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; - class RequestStatus extends StatelessWidget { final int status; @@ -21,14 +22,13 @@ class RequestStatus extends StatelessWidget { switch (status) { case 1: //pending case 2: //processing - return "Under Processing".needTranslation; - case 3: //completed - return "Completed".needTranslation; - break; + return LocaleKeys.underProcessing.tr(); + case 3: + return LocaleKeys.completed.tr(); case 4: //cancel case 6: case 7: - return "Canceled by patient".needTranslation; + return LocaleKeys.canceledByPatient.tr(); break; } return null; diff --git a/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart b/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart index f3ec388..7b17eab 100644 --- a/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart +++ b/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/emergency_services/models/resp_model/AmbulanceRequestOrdersModel.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/history/widget/RequestStatus.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -40,7 +42,7 @@ class AmbulanceHistoryItem extends StatelessWidget { spacing: 4.w, children: [ chip( Utils.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(order.time)), AppAssets.calendar, AppColors.blackBgColor), - chip("Ambulance".needTranslation, AppAssets.ambulance, AppColors.blackBgColor), + chip(LocaleKeys.ambulancerequest.tr(context: context), AppAssets.ambulance, AppColors.blackBgColor), ], ), Row( @@ -52,7 +54,7 @@ class AmbulanceHistoryItem extends StatelessWidget { ), if (order.statusId == 1 || order.statusId == 2) CustomButton( - text: "Cancel Request".needTranslation, + text: LocaleKeys.cancelRequest.tr(context: context), onPressed: () async { openCancelOrderBottomSheet(context); }, diff --git a/lib/presentation/emergency_services/history/widget/rrt_item.dart b/lib/presentation/emergency_services/history/widget/rrt_item.dart index dfb6e79..d345e2d 100644 --- a/lib/presentation/emergency_services/history/widget/rrt_item.dart +++ b/lib/presentation/emergency_services/history/widget/rrt_item.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/emergency_services/models/resp_model/RRTServiceData.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/history/widget/RequestStatus.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -40,13 +42,13 @@ class RRTItem extends StatelessWidget { spacing: 4.w, children: [ chip( Utils.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(order.time)), AppAssets.calendar, AppColors.blackBgColor), - chip("Rapid Response Team(RRT)".needTranslation, AppAssets.ic_rrt_vehicle, AppColors.blackBgColor), + chip(LocaleKeys.rapidResponseTeam.tr(context: context), AppAssets.ic_rrt_vehicle, AppColors.blackBgColor), ], ), SizedBox(height: 4.h), if (order.statusId == 1 || order.statusId == 2) CustomButton( - text: "Cancel Request".needTranslation, + text: LocaleKeys.cancelRequest.tr(context: context), onPressed: () async { openCancelOrderBottomSheet(context); }, diff --git a/lib/presentation/emergency_services/nearest_er_page.dart b/lib/presentation/emergency_services/nearest_er_page.dart index 16863bf..0ea3ab8 100644 --- a/lib/presentation/emergency_services/nearest_er_page.dart +++ b/lib/presentation/emergency_services/nearest_er_page.dart @@ -36,7 +36,7 @@ class _NearestErPageState extends State { @override Widget build(BuildContext context) { return CollapsingListView( - title: "Nearest ER".needTranslation, + title: LocaleKeys.nearester.tr(context: context), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -44,7 +44,7 @@ class _NearestErPageState extends State { children: [ TextInputWidget( labelText: LocaleKeys.search.tr(), - hintText: 'Type any facility name'.needTranslation, + hintText: 'Type any facility name', controller: searchText, onChange: (value) { debouncer.run(() { @@ -92,7 +92,7 @@ class _NearestErPageState extends State { }, ); } else { - return Center(child: Utils.getNoDataWidget(context, noDataText: "No nearest Er Arround you".needTranslation)); + return Center(child: Utils.getNoDataWidget(context, noDataText: "No nearest Er Around you")); } }), ), diff --git a/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart b/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart index c5301ea..db45654 100644 --- a/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart +++ b/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart @@ -31,7 +31,7 @@ class LocationInputBottomSheet extends StatelessWidget { children: [ TextInputWidget( labelText: LocaleKeys.search.tr(), - hintText: "Search Location".needTranslation, + hintText: LocaleKeys.selectLocation.tr(context: context), controller: TextEditingController(), onChange: (value){ debouncer.run(() { diff --git a/lib/presentation/emergency_services/widgets/nearestERItem.dart b/lib/presentation/emergency_services/widgets/nearestERItem.dart index bbce56a..2226f82 100644 --- a/lib/presentation/emergency_services/widgets/nearestERItem.dart +++ b/lib/presentation/emergency_services/widgets/nearestERItem.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/emergency_services/models/resp_model/ProjectAvgERWaitingTime.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -67,14 +69,14 @@ class NearestERItem extends StatelessWidget { spacing: 8.h, children: [ AppCustomChipWidget( - labelText: "${nearestERItem.distanceInKilometers} km".needTranslation, + labelText: "${nearestERItem.distanceInKilometers} km", icon: AppAssets.location, iconHasColor: false, labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), padding: EdgeInsets.all(8.h), ).toShimmer2(isShow: isLoading), AppCustomChipWidget( - labelText: "Expected waiting time: ${nearestERItem.getTime()} mins".needTranslation, + labelText: "Expected waiting time: ${nearestERItem.getTime()} mins", icon: AppAssets.waiting_time_clock, iconHasColor: false, labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), @@ -87,7 +89,7 @@ class NearestERItem extends StatelessWidget { children: [ Expanded( child: CustomButton( - text: "View Location on Google Maps".needTranslation, + text: LocaleKeys.viewLocationGoogleMaps.tr(context: context), iconSize: 18.h, icon: AppAssets.location, onPressed: () { diff --git a/lib/presentation/habib_wallet/habib_wallet_page.dart b/lib/presentation/habib_wallet/habib_wallet_page.dart index a7ec23d..b096e94 100644 --- a/lib/presentation/habib_wallet/habib_wallet_page.dart +++ b/lib/presentation/habib_wallet/habib_wallet_page.dart @@ -84,7 +84,7 @@ class _HabibWalletState extends State { CustomButton( icon: AppAssets.recharge_icon, iconSize: 21.h, - text: "Recharge".needTranslation, + text: LocaleKeys.recharge.tr(context: context), onPressed: () { Navigator.of(context) .push( diff --git a/lib/presentation/habib_wallet/recharge_wallet_page.dart b/lib/presentation/habib_wallet/recharge_wallet_page.dart index 74eebec..33de5e6 100644 --- a/lib/presentation/habib_wallet/recharge_wallet_page.dart +++ b/lib/presentation/habib_wallet/recharge_wallet_page.dart @@ -80,7 +80,7 @@ class _RechargeWalletPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ //TODO: Check with hussain to show AED or SAR - "Enter an amount".needTranslation.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.amount.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), Spacer(), Row( crossAxisAlignment: CrossAxisAlignment.end, @@ -110,7 +110,7 @@ class _RechargeWalletPageState extends State { 13.h, isExpanded: false), const Spacer(), - "SAR".needTranslation.toText20(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.sar.tr(context: context).toText20(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), ], @@ -151,7 +151,7 @@ class _RechargeWalletPageState extends State { ], ).onPress(() async { habibWalletVM.setCurrentIndex(0); - showCommonBottomSheetWithoutHeight(context, title: "Select Medical File".needTranslation, + showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.medicalFile.tr(context: context), titleWidget: Consumer(builder: (context, habibWalletVM, child) { return habibWalletVM.currentIndex != 0 ? IconButton( @@ -160,7 +160,7 @@ class _RechargeWalletPageState extends State { onPressed: () => habibWalletVM.setCurrentIndex(0), highlightColor: Colors.transparent, ) - : "Select Medical File".needTranslation.toText20(weight: FontWeight.w600); + : LocaleKeys.medicalFile.tr(context: context).toText20(weight: FontWeight.w600); }), child: Consumer(builder: (context, habibWalletVM, child) { return MultiPageBottomSheet(); }), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true); @@ -261,7 +261,7 @@ class _RechargeWalletPageState extends State { if (amountTextController.text.isEmpty) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Please enter amount to continue.".needTranslation), + child: Utils.getErrorWidget(loadingText: "Please enter amount to continue."), callBackFunc: () { textFocusNode.requestFocus(); }, @@ -271,7 +271,7 @@ class _RechargeWalletPageState extends State { } else if (habibWalletVM.selectedHospital == null) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Please select hospital to continue.".needTranslation), + child: Utils.getErrorWidget(loadingText: "Please select hospital to continue."), callBackFunc: () { textFocusNode.requestFocus(); }, diff --git a/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart b/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart index 1341af7..3dec5aa 100644 --- a/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart +++ b/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart @@ -82,7 +82,7 @@ class _WalletPaymentConfirmPageState extends State { children: [ Image.asset(AppAssets.mada, width: 72.h, height: 25.h).toShimmer2(isShow: false), SizedBox(height: 16.h), - "Mada".needTranslation.toText16(isBold: true).toShimmer2(isShow: false), + LocaleKeys.mada.tr(context: context).toText16(isBold: true).toShimmer2(isShow: false), ], ), SizedBox(width: 8.h), @@ -124,7 +124,7 @@ class _WalletPaymentConfirmPageState extends State { ], ).toShimmer2(isShow: false), SizedBox(height: 16.h), - "Visa or Mastercard".needTranslation.toText16(isBold: true).toShimmer2(isShow: false), + LocaleKeys.visaOrMastercard.tr(context: context).toText16(isBold: true).toShimmer2(isShow: false), ], ), SizedBox(width: 8.h), @@ -180,7 +180,7 @@ class _WalletPaymentConfirmPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - "Total amount to pay".needTranslation.toText16(isBold: true), + LocaleKeys.totalAmountToPay.tr(context: context).toText16(isBold: true), Utils.getPaymentAmountWithSymbol(habibWalletVM.walletRechargeAmount.toString().toText24(isBold: true), AppColors.blackColor, 15.h, isSaudiCurrency: true), ], ).paddingSymmetrical(24.h, 0.h), @@ -314,7 +314,7 @@ class _WalletPaymentConfirmPageState extends State { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getSuccessWidget(loadingText: "Payment Successful!".needTranslation), + child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), callBackFunc: () { Navigator.of(context).pop(); Navigator.of(context).pop(); @@ -327,7 +327,7 @@ class _WalletPaymentConfirmPageState extends State { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Payment Failed - ${err}".needTranslation), + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, @@ -339,7 +339,7 @@ class _WalletPaymentConfirmPageState extends State { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: "Payment Failed! Please try again.".needTranslation), + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/habib_wallet/widgets/select-medical_file.dart b/lib/presentation/habib_wallet/widgets/select-medical_file.dart index 73a7dfe..aaa0036 100644 --- a/lib/presentation/habib_wallet/widgets/select-medical_file.dart +++ b/lib/presentation/habib_wallet/widgets/select-medical_file.dart @@ -76,7 +76,7 @@ class _MultiPageBottomSheetState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Enter File Number".needTranslation.toText20(weight: FontWeight.w600), + "Enter File Number".toText20(weight: FontWeight.w600), SizedBox(height: 12.h), TextInputWidget( labelText: LocaleKeys.fileNumber.tr(), @@ -98,9 +98,9 @@ class _MultiPageBottomSheetState extends State { await habibWalletVM.getPatientInfoByPatientID( patientID: fileNumberEditingController.text, onSuccess: (response) async { - print(response.data["GetPatientInfoByPatientIDList"][0]["FullName"]); + debugPrint(response.data["GetPatientInfoByPatientIDList"][0]["FullName"]); await _dialogService.showCommonBottomSheetWithoutH( - message: "A file was found with name: ${response.data["GetPatientInfoByPatientIDList"][0]["FullName"]}, Would you like to recharge wallet for this file number?".needTranslation, + message: "A file was found with name: ${response.data["GetPatientInfoByPatientIDList"][0]["FullName"]}, Would you like to recharge wallet for this file number?", label: LocaleKeys.notice.tr(), onOkPressed: () { habibWalletVM.setSelectedRechargeType(3); @@ -161,7 +161,7 @@ class _MultiPageBottomSheetState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.familyTitle.tr(context: context).toText16(color: AppColors.textColor, weight: FontWeight.w500), - "Select a medical file from your family".needTranslation.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + "Select a medical file from your family".toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), ], ), Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h), diff --git a/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart b/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart index 086e0da..da374a0 100644 --- a/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart +++ b/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart @@ -1,8 +1,10 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/widgets/hospital_list_item.dart'; import 'package:hmg_patient_app_new/theme/colors.dart' show AppColors; import 'package:provider/provider.dart'; @@ -28,7 +30,7 @@ class SelectHospitalBottomSheet extends StatelessWidget { // ), // ), Text( - "Please select the hospital you want to make an advance payment for.".needTranslation, + LocaleKeys.selectHospitalForAdvancePayment.tr(context: context), style: TextStyle( fontSize: 16, fontWeight: FontWeight.w500, diff --git a/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart b/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart index 42cba5d..4a83f51 100644 --- a/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart +++ b/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/select_clinic_page.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculator_view_model.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/widgets/bf.dart'; @@ -57,8 +59,8 @@ class _HealthCalculatorDetailedPageState extends State { Widget build(BuildContext context) { DialogService dialogService = getIt.get(); return CollapsingListView( - title: widget.type == HealthCalConEnum.calculator ? "Health Calculators".needTranslation : "Health Converters".needTranslation, + title: widget.type == HealthCalConEnum.calculator ? LocaleKeys.healthCalculators.tr(context: context) : LocaleKeys.healthConverters.tr(), child: widget.type == HealthCalConEnum.calculator ? Column( children: [ @@ -47,8 +49,8 @@ class _HealthCalculatorsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - "General Health".needTranslation.toText16(weight: FontWeight.w600), - "Related To BMI, calories, body fat, etc to stay updated with your health.".needTranslation.toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) + LocaleKeys.generalHealth.tr().toText16(weight: FontWeight.w600), + LocaleKeys.relatedToBMICalories.tr().toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) ], ), ), @@ -60,7 +62,7 @@ class _HealthCalculatorsPageState extends State { ).paddingAll(16.w)) .onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Calculator".needTranslation, + label: LocaleKeys.selectCalculator.tr(), message: "", child: showCalculatorsItems(type: HealthCalculatorEnum.general), onOkPressed: () {}, @@ -78,8 +80,8 @@ class _HealthCalculatorsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - "Women's Health".needTranslation.toText16(weight: FontWeight.w600), - "Related To periods, ovulation, pregnancy, and other topics.".needTranslation.toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) + LocaleKeys.womensHealth.tr().toText16(weight: FontWeight.w600), + LocaleKeys.relatedToPeriodsOvulation.tr().toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) ], ), ), @@ -89,7 +91,7 @@ class _HealthCalculatorsPageState extends State { ).paddingAll(16.w)) .onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Calculator".needTranslation, + label: LocaleKeys.selectCalculator.tr(), message: "", child: showCalculatorsItems(type: HealthCalculatorEnum.women), onOkPressed: () {}, @@ -111,8 +113,8 @@ class _HealthCalculatorsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - "Blood Sugar".needTranslation.toText16(weight: FontWeight.w600), - "Track your glucose levels, understand trends, and get personalized insights for better health.".needTranslation.toText12( + LocaleKeys.bloodSugar.tr().toText16(weight: FontWeight.w600), + LocaleKeys.trackYourGlucoseLevels.tr().toText12( fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3), ) @@ -145,9 +147,8 @@ class _HealthCalculatorsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - "Blood Cholesterol".needTranslation.toText16(weight: FontWeight.w600), - "Monitor your cholesterol levels, track your LDL, HDL, and triglycerides. Get personalized recommendations for a healthy heart." - .needTranslation + LocaleKeys.bloodCholesterol.tr().toText16(weight: FontWeight.w600), + LocaleKeys.monitorCholesterolLevels.tr() .toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) ], ), @@ -176,9 +177,8 @@ class _HealthCalculatorsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - "Triglycerides Fat Blood".needTranslation.toText16(weight: FontWeight.w600), - "Manage triglycerides, a key blood fat. Understand levels, diet impacts, and heart health strategies." - .needTranslation + LocaleKeys.triglyceridesFatBlood.tr().toText16(weight: FontWeight.w600), + LocaleKeys.understandTriglyceridesImpact.tr() .toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) ], ), @@ -230,17 +230,17 @@ class _HealthCalculatorsPageState extends State { } final List generalHealthServices = [ - HealthComponentModel(title: "BMI\nCalculator".needTranslation, icon: AppAssets.bmi, type: HealthCalculatorsTypeEnum.bmi, clinicID: 108, calculationID: null), - HealthComponentModel(title: "Calories\nCalculator".needTranslation, icon: AppAssets.calories, type: HealthCalculatorsTypeEnum.calories, clinicID: null, calculationID: 2), - HealthComponentModel(title: "BMR\nCalculator".needTranslation, icon: AppAssets.bmr, type: HealthCalculatorsTypeEnum.bmr, clinicID: null, calculationID: 3), - HealthComponentModel(title: "Ideal Body\nWeight".needTranslation, icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.idealBodyWeight, clinicID: null, calculationID: 4), - HealthComponentModel(title: "Body Fat\nCalculator".needTranslation, icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.bodyFat, clinicID: null, calculationID: 5), - HealthComponentModel(title: "Carbs\nProtein & Fat".needTranslation, icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.crabsProteinFat, clinicID: null, calculationID: 11), + HealthComponentModel(title: LocaleKeys.bmiCalculator.tr(), icon: AppAssets.bmi, type: HealthCalculatorsTypeEnum.bmi, clinicID: 108, calculationID: null), + HealthComponentModel(title: LocaleKeys.caloriesCalculator.tr(), icon: AppAssets.calories, type: HealthCalculatorsTypeEnum.calories, clinicID: null, calculationID: 2), + HealthComponentModel(title: LocaleKeys.bmrCalculator.tr(), icon: AppAssets.bmr, type: HealthCalculatorsTypeEnum.bmr, clinicID: null, calculationID: 3), + HealthComponentModel(title: LocaleKeys.idealBodyWeight.tr(), icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.idealBodyWeight, clinicID: null, calculationID: 4), + HealthComponentModel(title: LocaleKeys.bodyFatCalculator.tr(), icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.bodyFat, clinicID: null, calculationID: 5), + HealthComponentModel(title: LocaleKeys.carbsProteinFat.tr(), icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.crabsProteinFat, clinicID: null, calculationID: 11), ]; final List womenHealthServices = [ - HealthComponentModel(title: "Ovulation\nPeriod".needTranslation, icon: AppAssets.locate_me, type: HealthCalculatorsTypeEnum.ovulation, clinicID: null, calculationID: 6 ), - HealthComponentModel(title: "Delivery\nDue Date".needTranslation, icon: AppAssets.activeCheck, type: HealthCalculatorsTypeEnum.deliveryDueDate, clinicID: null, calculationID: 6), + HealthComponentModel(title: LocaleKeys.ovulationPeriod.tr(), icon: AppAssets.locate_me, type: HealthCalculatorsTypeEnum.ovulation, clinicID: null, calculationID: 6 ), + HealthComponentModel(title: LocaleKeys.deliveryDueDate.tr(), icon: AppAssets.activeCheck, type: HealthCalculatorsTypeEnum.deliveryDueDate, clinicID: null, calculationID: 6), ]; } diff --git a/lib/presentation/health_calculators_and_converts/widgets/bf.dart b/lib/presentation/health_calculators_and_converts/widgets/bf.dart index 3a88eb3..b00846b 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/bf.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/bf.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculator_view_model.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -92,7 +94,7 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Select Gender".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.selectGender.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedGender.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -105,7 +107,7 @@ class _BodyFatWidgetState extends State { ).paddingSymmetrical(0.w, 16.w).onPress(() { List _genders = ["Male", "Female"]; dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Gender".needTranslation, + label: LocaleKeys.selectGender.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -215,7 +217,7 @@ class _BodyFatWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -323,7 +325,7 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedNeckUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -332,7 +334,7 @@ class _BodyFatWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -449,7 +451,7 @@ class _BodyFatWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -557,7 +559,7 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedHipUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -566,7 +568,7 @@ class _BodyFatWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), diff --git a/lib/presentation/health_calculators_and_converts/widgets/bmi.dart b/lib/presentation/health_calculators_and_converts/widgets/bmi.dart index 49b77c0..3969db4 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/bmi.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/bmi.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -10,6 +11,8 @@ import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculator_view_model.dart'; +import '../../../generated/locale_keys.g.dart'; + class BMIWidget extends StatefulWidget { Function(dynamic result)? onChange; @@ -116,7 +119,7 @@ class _BMIWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -233,7 +236,7 @@ class _BMIWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), diff --git a/lib/presentation/health_calculators_and_converts/widgets/bmr.dart b/lib/presentation/health_calculators_and_converts/widgets/bmr.dart index 5f429ff..f19c6b5 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/bmr.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/bmr.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -87,7 +89,7 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Select Gender".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.selectGender.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedGender.toCamelCase.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -101,7 +103,7 @@ class _BMRWidgetState extends State { List _genders = ["Male", "Female"]; dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Gender".needTranslation, + label: LocaleKeys.selectGender.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -168,7 +170,7 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Age (11-120) yrs".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Age (11-120) yrs".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -240,7 +242,7 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedHeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -249,7 +251,7 @@ class _BMRWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -367,7 +369,7 @@ class _BMRWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -437,7 +439,7 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Activity Level".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.activityLevel.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedActivityLevel.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -450,7 +452,7 @@ class _BMRWidgetState extends State { ).paddingSymmetrical(0.w, 16.w).onPress(() { List _activity = ["Almost Inactive (no exercise)", "Lightly active", "Lightly active (1-3) days per week", "Super active (very hard exercise)"]; dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Activity Level".needTranslation, + label: LocaleKeys.selectActivityLevel.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), diff --git a/lib/presentation/health_calculators_and_converts/widgets/calories.dart b/lib/presentation/health_calculators_and_converts/widgets/calories.dart index fbe15a6..b1a4b77 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/calories.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/calories.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -102,7 +104,7 @@ class _CaloriesWidgetState extends State { List _genders = ["Male", "Female"]; dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Gender".needTranslation, + label: LocaleKeys.selectGender.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -168,7 +170,7 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Age (11-120) yrs".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Age (11-120) yrs".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -249,7 +251,7 @@ class _CaloriesWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -366,7 +368,7 @@ class _CaloriesWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -436,7 +438,7 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Activity Level".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.activityLevel.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedActivityLevel.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -449,7 +451,7 @@ class _CaloriesWidgetState extends State { ).paddingSymmetrical(0.w, 16.w).onPress(() { List _activity = ["Almost Inactive (no exercise)", "Lightly active", "Lightly active (1-3) days per week", "Super active (very hard exercise)"]; dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Activity Level".needTranslation, + label: LocaleKeys.selectActivityLevel.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), diff --git a/lib/presentation/health_calculators_and_converts/widgets/crabs.dart b/lib/presentation/health_calculators_and_converts/widgets/crabs.dart index 5fe1215..83130fe 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/crabs.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/crabs.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; @@ -68,7 +70,7 @@ class _CrabsWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Calories Per Day".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.caloriesPerDay.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -111,7 +113,7 @@ class _CrabsWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Diet Type".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.dietType.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedDietType.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -124,7 +126,7 @@ class _CrabsWidgetState extends State { ).paddingSymmetrical(0.w, 16.w).onPress(() { List _activity = ["Very Low Crabs", "Low Crabs", "Moderate Crabs", "USDA Guidelines ", "Zone Diet"]; dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Diet Type".needTranslation, + label: LocaleKeys.selectDietType.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), diff --git a/lib/presentation/health_calculators_and_converts/widgets/dduedate.dart b/lib/presentation/health_calculators_and_converts/widgets/dduedate.dart index 15c0a0c..3ecf2a5 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/dduedate.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/dduedate.dart @@ -36,7 +36,7 @@ class _DeliveryDueDWidgetState extends State { children: [ TextInputWidget( labelText: "Last Period Date", - hintText: "11 July, 1994".needTranslation, + hintText: "11 July, 1994", controller: _date, focusNode: FocusNode(), isEnable: true, diff --git a/lib/presentation/health_calculators_and_converts/widgets/ibw.dart b/lib/presentation/health_calculators_and_converts/widgets/ibw.dart index 5f67511..1665ccd 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/ibw.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/ibw.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; @@ -114,7 +116,7 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedHeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -123,7 +125,7 @@ class _IdealBodyWeightWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -231,7 +233,7 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedWeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -240,7 +242,7 @@ class _IdealBodyWeightWidgetState extends State { ], ).onPress(() { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Unit".needTranslation, + label: LocaleKeys.unit.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -308,7 +310,7 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Body Frame Size".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.bodyFrameSize.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), selectedBodyFrameSize.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), ], ), @@ -321,7 +323,7 @@ class _IdealBodyWeightWidgetState extends State { ).paddingSymmetrical(0.w, 16.w).onPress(() { List _activity = ["Small (fingers overlaps)", "Medium (fingers touch)", "Large (fingers don't touch)"]; dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Select Body Frame Size".needTranslation, + label: LocaleKeys.selectBodyFrameSize.tr(context: context), message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), diff --git a/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart b/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart index de209cb..8d7591e 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; @@ -63,7 +65,7 @@ class _OvulationWidgetState extends State { children: [ TextInputWidget( labelText: "Date", - hintText: "11 July, 1994".needTranslation, + hintText: "11 July, 1994", controller: _ageController, isEnable: true, prefix: null, @@ -95,7 +97,7 @@ class _OvulationWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Average Cycle Length (Usually 28 days)".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.averageCycleLength.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -132,7 +134,7 @@ class _OvulationWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Average Luteal Phase Length(Usually 14 days)".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.averageLutealPhase.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, diff --git a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart index 56f82fc..cf92c9b 100644 --- a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart +++ b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -8,6 +9,7 @@ import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -55,11 +57,11 @@ class _AddHealthTrackerEntryPageState extends State { String _getPageTitle() { switch (widget.trackerType) { case HealthTrackerTypeEnum.bloodSugar: - return "Add Blood Sugar".needTranslation; + return LocaleKeys.addBloodSugar.tr(context: context); case HealthTrackerTypeEnum.bloodPressure: - return "Add Blood Pressure".needTranslation; + return LocaleKeys.addBloodPressure.tr(context: context); case HealthTrackerTypeEnum.weightTracker: - return "Add Weight".needTranslation; + return LocaleKeys.addWeight.tr(context: context); } } @@ -67,11 +69,11 @@ class _AddHealthTrackerEntryPageState extends State { String _getSuccessMessage() { switch (widget.trackerType) { case HealthTrackerTypeEnum.bloodSugar: - return "Blood Sugar Data saved successfully".needTranslation; + return LocaleKeys.bloodSugarDataSavedSuccessfully.tr(context: context); case HealthTrackerTypeEnum.bloodPressure: - return "Blood Pressure Data saved successfully".needTranslation; + return LocaleKeys.bloodPressureDataSavedSuccessfully.tr(context: context); case HealthTrackerTypeEnum.weightTracker: - return "Weight Data saved successfully".needTranslation; + return LocaleKeys.weightDataSavedSuccessfully.tr(context: context); } } @@ -92,7 +94,7 @@ class _AddHealthTrackerEntryPageState extends State { // Save Blood Sugar entry Future _saveBloodSugarEntry(HealthTrackersViewModel viewModel) async { - LoaderBottomSheet.showLoader(loadingText: "Please wait".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); // Combine date and time final dateTime = "${dateController.text} ${timeController.text}"; @@ -113,7 +115,7 @@ class _AddHealthTrackerEntryPageState extends State { // Save Weight entry Future _saveWeightEntry(HealthTrackersViewModel viewModel) async { - LoaderBottomSheet.showLoader(loadingText: "Please wait".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); // Combine date and time final dateTime = "${dateController.text} ${timeController.text}"; @@ -133,7 +135,7 @@ class _AddHealthTrackerEntryPageState extends State { // Save Blood Pressure entry Future _saveBloodPressureEntry(HealthTrackersViewModel viewModel) async { - LoaderBottomSheet.showLoader(loadingText: "Please wait".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); // Combine date and time final dateTime = "${dateController.text} ${timeController.text}"; @@ -204,7 +206,7 @@ class _AddHealthTrackerEntryPageState extends State { bool useUpperCase = false, }) { dialogService.showFamilyBottomSheetWithoutHWithChild( - label: title.needTranslation, + label: title, message: "", child: Container( constraints: BoxConstraints(maxHeight: MediaQuery.of(context).size.height * 0.7), @@ -237,7 +239,7 @@ class _AddHealthTrackerEntryPageState extends State { FocusScope.of(context).unfocus(); _showSelectionBottomSheet( context: context, - title: "Select Unit".needTranslation, + title: LocaleKeys.selectUnit.tr(context: context), items: viewModel.bloodSugarUnit, selectedValue: viewModel.selectedBloodSugarUnit, onSelected: viewModel.setBloodSugarUnit, @@ -250,7 +252,7 @@ class _AddHealthTrackerEntryPageState extends State { FocusScope.of(context).unfocus(); _showSelectionBottomSheet( context: context, - title: "Select Measure Time".needTranslation, + title: LocaleKeys.selectMeasureTime.tr(context: context), items: viewModel.bloodSugarMeasureTimeEnList, selectedValue: viewModel.selectedBloodSugarMeasureTime, onSelected: viewModel.setBloodSugarMeasureTime, @@ -263,7 +265,7 @@ class _AddHealthTrackerEntryPageState extends State { FocusScope.of(context).unfocus(); _showSelectionBottomSheet( context: context, - title: "Select Unit".needTranslation, + title: LocaleKeys.selectUnit.tr(context: context), items: viewModel.weightUnits, selectedValue: viewModel.selectedWeightUnit, onSelected: viewModel.setWeightUnit, @@ -276,7 +278,7 @@ class _AddHealthTrackerEntryPageState extends State { FocusScope.of(context).unfocus(); _showSelectionBottomSheet( context: context, - title: "Select Arm".needTranslation, + title: LocaleKeys.selectArm.tr(context: context), items: viewModel.measuredArmList, selectedValue: viewModel.selectedMeasuredArm, onSelected: viewModel.setMeasuredArm, @@ -404,7 +406,7 @@ class _AddHealthTrackerEntryPageState extends State { children: [ _buildSettingsRow( icon: AppAssets.heightIcon, - label: "Enter Blood Sugar".needTranslation, + label: LocaleKeys.enterBloodSugar.tr(context: context), inputField: _buildTextField(viewModel.bloodSugarController, '', keyboardType: TextInputType.number), unit: viewModel.selectedBloodSugarUnit, onUnitTap: () => _showBloodSugarUnitSelectionBottomSheet(context, viewModel), @@ -413,7 +415,7 @@ class _AddHealthTrackerEntryPageState extends State { Divider(height: 1, color: AppColors.dividerColor), _buildSettingsRow( icon: AppAssets.weight_tracker_icon, - label: "Select Measure Time".needTranslation, + label: LocaleKeys.selectMeasureTime.tr(context: context), value: viewModel.selectedBloodSugarMeasureTime, onRowTap: () => _showBloodSugarEntryTimeBottomSheet(context, viewModel), ), @@ -428,19 +430,19 @@ class _AddHealthTrackerEntryPageState extends State { _buildSettingsRow( icon: AppAssets.bloodPressureIcon, iconColor: AppColors.greyTextColor, - label: "Enter Systolic Value".needTranslation, + label: LocaleKeys.enterSystolicValue.tr(context: context), inputField: _buildTextField(viewModel.systolicController, '', keyboardType: TextInputType.number), ), _buildSettingsRow( icon: AppAssets.bloodPressureIcon, iconColor: AppColors.greyTextColor, - label: "Enter Diastolic Value".needTranslation, + label: LocaleKeys.enterDiastolicValue.tr(context: context), inputField: _buildTextField(viewModel.diastolicController, '', keyboardType: TextInputType.number), ), _buildSettingsRow( icon: AppAssets.bodyIcon, iconColor: AppColors.greyTextColor, - label: "Select Arm".needTranslation, + label: LocaleKeys.selectArm.tr(context: context), value: viewModel.selectedMeasuredArm, onRowTap: () => _showMeasuredArmSelectionBottomSheet(context, viewModel), ), @@ -455,7 +457,7 @@ class _AddHealthTrackerEntryPageState extends State { children: [ _buildSettingsRow( icon: AppAssets.weightScale, - label: "Enter Weight".needTranslation, + label: LocaleKeys.enterWeight.tr(context: context), inputField: _buildTextField(viewModel.weightController, '', keyboardType: TextInputType.number), unit: viewModel.selectedWeightUnit, onUnitTap: () => _showWeightUnitSelectionBottomSheet(context, viewModel), @@ -474,7 +476,7 @@ class _AddHealthTrackerEntryPageState extends State { isReadOnly: true, isArrowTrailing: true, labelText: "Date", - hintText: "Select date".needTranslation, + hintText: LocaleKeys.pickADate.tr(context: context), focusNode: FocusNode(), isEnable: true, prefix: null, @@ -504,7 +506,7 @@ class _AddHealthTrackerEntryPageState extends State { isReadOnly: true, isArrowTrailing: true, labelText: "Time", - hintText: "Select time".needTranslation, + hintText: LocaleKeys.selectMeasureTime.tr(context: context), focusNode: FocusNode(), isEnable: true, prefix: null, @@ -547,7 +549,7 @@ class _AddHealthTrackerEntryPageState extends State { child: Padding( padding: EdgeInsets.all(24.w), child: CustomButton( - text: "Save".needTranslation, + text: LocaleKeys.save.tr(context: context), onPressed: () async => await _saveEntry(viewModel), borderRadius: 12.r, padding: EdgeInsets.symmetric(vertical: 14.h), diff --git a/lib/presentation/health_trackers/health_tracker_detail_page.dart b/lib/presentation/health_trackers/health_tracker_detail_page.dart index 9443f12..83b37f6 100644 --- a/lib/presentation/health_trackers/health_tracker_detail_page.dart +++ b/lib/presentation/health_trackers/health_tracker_detail_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -14,6 +15,7 @@ import 'package:hmg_patient_app_new/features/health_trackers/models/blood_sugar/ import 'package:hmg_patient_app_new/features/health_trackers/models/blood_sugar/year_diabetic_result_average.dart'; import 'package:hmg_patient_app_new/features/health_trackers/models/weight/week_weight_measurement_result_average.dart'; import 'package:hmg_patient_app_new/features/health_trackers/models/weight/year_weight_measurement_result_average.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/widgets/tracker_last_value_card.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; @@ -67,11 +69,11 @@ class _HealthTrackerDetailPageState extends State { String _getPageTitle() { switch (widget.trackerType) { case HealthTrackerTypeEnum.bloodSugar: - return "Blood Sugar".needTranslation; + return LocaleKeys.bloodSugar.tr(context: context); case HealthTrackerTypeEnum.bloodPressure: - return "Blood Pressure".needTranslation; + return LocaleKeys.bloodPressure.tr(context: context); case HealthTrackerTypeEnum.weightTracker: - return "Weight".needTranslation; + return LocaleKeys.weight.tr(context: context); } } @@ -153,7 +155,7 @@ class _HealthTrackerDetailPageState extends State { final dialogService = getIt.get(); dialogService.showFamilyBottomSheetWithoutHWithChild( - label: title.needTranslation, + label: title, message: "", child: Container( padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), @@ -183,7 +185,7 @@ class _HealthTrackerDetailPageState extends State { void _showHistoryDurationBottomsheet(BuildContext context, HealthTrackersViewModel viewModel) { _showSelectionBottomSheet( context: context, - title: "Select Duration".needTranslation, + title: LocaleKeys.selectDuration.tr(), items: viewModel.durationFilters, selectedValue: viewModel.selectedDurationFilter, onSelected: viewModel.setFilterDuration, @@ -286,7 +288,7 @@ class _HealthTrackerDetailPageState extends State { children: [ Row( children: [ - "History".needTranslation.toText16(isBold: true), + LocaleKeys.history.tr(context: context).toText16(isBold: true), if (viewModel.isGraphView) ...[ SizedBox(width: 12.w), InkWell( @@ -661,9 +663,9 @@ class _HealthTrackerDetailPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - _buildLegendItem(AppColors.errorColor, "Systolic".needTranslation), + _buildLegendItem(AppColors.errorColor, LocaleKeys.systolic.tr()), SizedBox(width: 24.w), - _buildLegendItem(AppColors.blueColor, "Diastolic".needTranslation), + _buildLegendItem(AppColors.blueColor, LocaleKeys.diastolic.tr()), ], ), SizedBox(height: 12.h), @@ -1046,7 +1048,7 @@ class _HealthTrackerDetailPageState extends State { final emailController = TextEditingController(text: userEmail); dialogService.showFamilyBottomSheetWithoutHWithChild( - label: "Send Report by Email".needTranslation, + label: LocaleKeys.sendReportByEmail.tr(), message: "", child: _buildEmailInputContent( context: context, @@ -1068,7 +1070,7 @@ class _HealthTrackerDetailPageState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Enter your email address to receive the report".needTranslation.toText14( + LocaleKeys.enterYourEmailToReceiveReport.tr().toText14( color: AppColors.textColor, weight: FontWeight.w400, ), @@ -1077,8 +1079,8 @@ class _HealthTrackerDetailPageState extends State { // Email Input Field using TextInputWidget TextInputWidget( padding: EdgeInsets.symmetric(horizontal: 8.w), - labelText: "Email Address".needTranslation, - hintText: "Enter email address".needTranslation, + labelText: LocaleKeys.email.tr(context: context), + hintText: LocaleKeys.enterEmail.tr(context: context), controller: emailController, keyboardType: TextInputType.emailAddress, isEnable: true, @@ -1094,7 +1096,7 @@ class _HealthTrackerDetailPageState extends State { Expanded( child: CustomButton( height: 56.h, - text: "Send Report".needTranslation, + text: LocaleKeys.send.tr(context: context), onPressed: () { _sendEmailReport( context: context, @@ -1122,7 +1124,7 @@ class _HealthTrackerDetailPageState extends State { // Validate email if (email.isEmpty) { dialogService.showErrorBottomSheet( - message: "Please enter your email address".needTranslation, + message: LocaleKeys.enterEmail.tr(context: context), ); return; } @@ -1131,7 +1133,7 @@ class _HealthTrackerDetailPageState extends State { final emailRegex = RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$'); if (!emailRegex.hasMatch(email)) { dialogService.showErrorBottomSheet( - message: "Please enter a valid email address".needTranslation, + message: LocaleKeys.pleaseEnterAValidEmail.tr(context: context), ); return; } @@ -1142,7 +1144,7 @@ class _HealthTrackerDetailPageState extends State { // Call appropriate email function based on tracker type switch (widget.trackerType) { case HealthTrackerTypeEnum.bloodSugar: - LoaderBottomSheet.showLoader(loadingText: "Please wait".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); await viewModel.sendBloodSugarReportByEmail( email: email, onSuccess: () { @@ -1158,7 +1160,7 @@ class _HealthTrackerDetailPageState extends State { break; case HealthTrackerTypeEnum.bloodPressure: - LoaderBottomSheet.showLoader(loadingText: "Please wait".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); await viewModel.sendBloodPressureReportByEmail( email: email, @@ -1176,7 +1178,7 @@ class _HealthTrackerDetailPageState extends State { break; case HealthTrackerTypeEnum.weightTracker: - LoaderBottomSheet.showLoader(loadingText: "Please wait".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); await viewModel.sendWeightReportByEmail( email: email, onSuccess: () { @@ -1199,7 +1201,7 @@ class _HealthTrackerDetailPageState extends State { showCommonBottomSheetWithoutHeight( context, child: Utils.getSuccessWidget( - loadingText: "Report has been sent to your email successfully".needTranslation, + loadingText: LocaleKeys.emailSentSuccessfully.tr(context: context), ), callBackFunc: () {}, isCloseButtonVisible: false, @@ -1261,7 +1263,7 @@ class _HealthTrackerDetailPageState extends State { child: Padding( padding: EdgeInsets.all(24.w), child: CustomButton( - text: "Add new Record".needTranslation, + text: LocaleKeys.addNewRecord.tr(), onPressed: () { if (!viewModel.isLoading) { context.navigateWithName(AppRoutes.addHealthTrackerEntryPage, arguments: widget.trackerType); diff --git a/lib/presentation/health_trackers/health_trackers_page.dart b/lib/presentation/health_trackers/health_trackers_page.dart index c55e8b4..9c68281 100644 --- a/lib/presentation/health_trackers/health_trackers_page.dart +++ b/lib/presentation/health_trackers/health_trackers_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -6,6 +7,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -70,14 +72,14 @@ class _HealthTrackersPageState extends State { @override Widget build(BuildContext context) { return CollapsingListView( - title: "Health Trackers".needTranslation, + title: LocaleKeys.healthTrackers.tr(context: context), child: Column( children: [ buildHealthTrackerCard( iconBgColor: AppColors.primaryRedColor, icon: AppAssets.bloodSugarOnlyIcon, - title: "Blood Sugar".needTranslation, - description: "Track your glucose levels, understand trends, and get personalized insights for better health.".needTranslation, + title: LocaleKeys.bloodSugar.tr(context: context), + description: "Track your glucose levels, understand trends, and get personalized insights for better health.", onTap: () { context.navigateWithName( AppRoutes.healthTrackerDetailPage, @@ -89,8 +91,8 @@ class _HealthTrackersPageState extends State { buildHealthTrackerCard( iconBgColor: AppColors.infoColor, icon: AppAssets.bloodPressureIcon, - title: "Blood Pressure".needTranslation, - description: "Monitor your blood pressure levels, track systolic and diastolic readings, and maintain a healthy heart.".needTranslation, + title: LocaleKeys.bloodPressure.tr(context: context), + description: LocaleKeys.monitorBloodPressureLevels.tr(context: context), onTap: () { context.navigateWithName( AppRoutes.healthTrackerDetailPage, @@ -102,8 +104,8 @@ class _HealthTrackersPageState extends State { buildHealthTrackerCard( iconBgColor: AppColors.successColor, icon: AppAssets.weightIcon, - title: "Weight".needTranslation, - description: "Track your weight progress, set goals, and maintain a healthy body mass for overall wellness.".needTranslation, + title: LocaleKeys.weight.tr(context: context), + description: LocaleKeys.trackWeightProgress.tr(context: context), onTap: () { context.navigateWithName( AppRoutes.healthTrackerDetailPage, diff --git a/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart b/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart index 542baa5..570005b 100644 --- a/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart +++ b/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart @@ -5,6 +5,7 @@ import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -19,32 +20,32 @@ class TrackerLastValueCard extends StatelessWidget { /// Get status text and color based on blood sugar value (String status, Color color, Color bgColor) _getBloodSugarStatus(double value) { if (value < 70) { - return ('Low'.needTranslation, AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.5)); + return (LocaleKeys.low.tr(), AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.5)); } else if (value <= 100) { - return ('Normal'.needTranslation, AppColors.successColor, AppColors.successLightBgColor); + return (LocaleKeys.normal.tr(), AppColors.successColor, AppColors.successLightBgColor); } else if (value <= 125) { - return ('Pre-diabetic'.needTranslation, AppColors.ratingColorYellow, AppColors.errorColor.withValues(alpha: 0.4)); + return (LocaleKeys.preDiabetic.tr(), AppColors.ratingColorYellow, AppColors.errorColor.withValues(alpha: 0.4)); } else { - return ('High'.needTranslation, AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.4)); + return (LocaleKeys.high.tr(), AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.4)); } } /// Get status text and color based on blood pressure value (systolic) (String status, Color color, Color bgColor) _getBloodPressureStatus(int systolic) { if (systolic < 90) { - return ('Low'.needTranslation, AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.5)); + return (LocaleKeys.low.tr(), AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.5)); } else if (systolic <= 120) { - return ('Normal'.needTranslation, AppColors.successColor, AppColors.successLightBgColor); + return (LocaleKeys.normal.tr(), AppColors.successColor, AppColors.successLightBgColor); } else if (systolic <= 140) { - return ('Elevated'.needTranslation, AppColors.ratingColorYellow, AppColors.errorColor.withValues(alpha: 0.4)); + return (LocaleKeys.elevated.tr(), AppColors.ratingColorYellow, AppColors.errorColor.withValues(alpha: 0.4)); } else { - return ('High'.needTranslation, AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.4)); + return (LocaleKeys.high.tr(), AppColors.errorColor, AppColors.errorColor.withValues(alpha: 0.4)); } } /// Get status for weight (neutral - no good/bad status) (String status, Color color, Color bgColor) _getWeightStatus() { - return ('Recorded'.needTranslation, AppColors.successColor, AppColors.successLightBgColor); + return (LocaleKeys.recorded.tr(), AppColors.successColor, AppColors.successLightBgColor); } /// Get default unit based on tracker type @@ -219,7 +220,7 @@ class TrackerLastValueCard extends StatelessWidget { ), SizedBox(height: 8.h), AppCustomChipWidget( - labelText: "No records yet".needTranslation, + labelText: LocaleKeys.noRecordsYet.tr(), icon: AppAssets.doctor_calendar_icon, ), ], @@ -249,13 +250,13 @@ class TrackerLastValueCard extends StatelessWidget { Row( children: [ AppCustomChipWidget( - labelText: "${"Last Record".needTranslation}: $formattedDate", + labelText: "${LocaleKeys.lastRecord.tr()}: $formattedDate", icon: AppAssets.doctor_calendar_icon, ), SizedBox(width: 8.w), if (trackerType != HealthTrackerTypeEnum.weightTracker) ...[ AppCustomChipWidget( - labelText: status.needTranslation, + labelText: status, icon: AppAssets.normalStatusGreenIcon, iconColor: statusColor, ), diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index 5c028db..0b37a4d 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -50,7 +50,7 @@ class ServicesPage extends StatelessWidget { late MedicalFileViewModel medicalFileViewModel; late final List hmgServices = [ - HmgServicesComponentModel(11, "Emergency Services".needTranslation, "".needTranslation, AppAssets.emergency_services_icon, bgColor: AppColors.primaryRedColor, true, route: null, onTap: () async { + HmgServicesComponentModel(11, LocaleKeys.emergencyServices.tr(), "", AppAssets.emergency_services_icon, bgColor: AppColors.primaryRedColor, true, route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().flushData(); getIt.get().getTransportationOrders( @@ -71,14 +71,14 @@ class ServicesPage extends StatelessWidget { }), HmgServicesComponentModel( 11, - "Book\nAppointment".needTranslation, - "".needTranslation, + LocaleKeys.bookAppointment.tr(), + "", AppAssets.appointment_calendar_icon, bgColor: AppColors.bookAppointment, true, route: AppRoutes.bookAppointmentPage, ), - HmgServicesComponentModel(5, "Complete Checkup".needTranslation, "".needTranslation, AppAssets.comprehensiveCheckup, bgColor: AppColors.bgGreenColor, true, route: null, onTap: () async { + HmgServicesComponentModel(5, LocaleKeys.completeCheckup.tr(), "", AppAssets.comprehensiveCheckup, bgColor: AppColors.bgGreenColor, true, route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.comprehensiveCheckupPage); } else { @@ -87,8 +87,8 @@ class ServicesPage extends StatelessWidget { }), HmgServicesComponentModel( 11, - "Indoor Navigation".needTranslation, - "".needTranslation, + LocaleKeys.indoorNavigation.tr(), + "", AppAssets.indoor_nav_icon, bgColor: Color(0xff45A2F8), true, @@ -131,7 +131,7 @@ class ServicesPage extends StatelessWidget { }, ), HmgServicesComponentModel( - 11, "E-Referral Services".needTranslation, "".needTranslation, AppAssets.eReferral, bgColor: AppColors.eReferralCardColor, true, route: null, onTap: () async { + 11, LocaleKeys.eReferralServices.tr(), "", AppAssets.eReferral, bgColor: AppColors.eReferralCardColor, true, route: null, onTap: () async { if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.eReferralPage); } else { @@ -140,13 +140,13 @@ class ServicesPage extends StatelessWidget { }), HmgServicesComponentModel( 3, - "Blood Donation".needTranslation, - "".needTranslation, + LocaleKeys.bloodDonation.tr(), + "", AppAssets.blood_donation_icon, bgColor: AppColors.bloodDonationCardColor, true, route: null, onTap: () async { - LoaderBottomSheet.showLoader(loadingText: "Fetching Data..."); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr()); await bloodDonationViewModel.getRegionSelectedClinics(onSuccess: (val) async { // await bloodDonationViewModel.getPatientBloodGroupDetails(onSuccess: (val) { LoaderBottomSheet.hideLoader(); @@ -210,8 +210,8 @@ class ServicesPage extends StatelessWidget { late final List hmgHealthToolServices = [ HmgServicesComponentModel( 11, - "Health Trackers".needTranslation, - "".needTranslation, + LocaleKeys.healthTrackers.tr(), + "", AppAssets.general_health, bgColor: AppColors.whiteColor, true, @@ -226,15 +226,15 @@ class ServicesPage extends StatelessWidget { ), HmgServicesComponentModel( 11, - "Daily Water Monitor".needTranslation, - "".needTranslation, + LocaleKeys.dailyWaterMonitor.tr(), + "", AppAssets.daily_water_monitor_icon, bgColor: AppColors.whiteColor, true, route: null, // Set to null since we handle navigation in onTap onTap: () async { if (getIt.get().isAuthenticated) { - LoaderBottomSheet.showLoader(loadingText: "Fetching your water intake details.".needTranslation); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingYourWaterIntakeDetails.tr()); final waterMonitorVM = getIt.get(); final context = getIt.get().navigatorKey.currentContext!; await waterMonitorVM.fetchUserDetailsForMonitoring( @@ -259,8 +259,8 @@ class ServicesPage extends StatelessWidget { ), HmgServicesComponentModel( 11, - "Health\nCalculators".needTranslation, - "".needTranslation, + LocaleKeys.healthCalculatorsServices.tr(), + "", AppAssets.health_calculators_services_icon, bgColor: AppColors.whiteColor, true, @@ -268,8 +268,8 @@ class ServicesPage extends StatelessWidget { ), HmgServicesComponentModel( 5, - "Health\nConverters".needTranslation, - "".needTranslation, + LocaleKeys.healthConvertersServices.tr(), + "", AppAssets.health_converters_icon, bgColor: AppColors.whiteColor, true, @@ -277,8 +277,8 @@ class ServicesPage extends StatelessWidget { ), HmgServicesComponentModel( 11, - "Smart\nWatches".needTranslation, - "".needTranslation, + LocaleKeys.smartWatchesServices.tr(), + "", AppAssets.smartwatch_icon, bgColor: AppColors.whiteColor, true, @@ -301,13 +301,13 @@ class ServicesPage extends StatelessWidget { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "Explore Services".needTranslation, + title: LocaleKeys.exploreServices.tr(), isLeading: false, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 16.h), - "Medical & Care Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + LocaleKeys.medicalAndCareServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( @@ -325,7 +325,7 @@ class ServicesPage extends StatelessWidget { }, ).paddingSymmetrical(24.w, 0), SizedBox(height: 24.h), - "HMG Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + LocaleKeys.hmgServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), SizedBox( height: 350.h, @@ -356,7 +356,7 @@ class ServicesPage extends StatelessWidget { ), ), SizedBox(height: 24.h), - "Personal Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + LocaleKeys.personalServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), Row( children: [ @@ -377,7 +377,7 @@ class ServicesPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 30.w, height: 30.h), - "Habib Wallet".needTranslation.toText14(weight: FontWeight.w600, maxlines: 2).expanded, + LocaleKeys.habibWallet.tr().toText14(weight: FontWeight.w600, maxlines: 2).expanded, Utils.buildSvgWithAssets(icon: AppAssets.arrow_forward), ], ), @@ -387,7 +387,7 @@ class ServicesPage extends StatelessWidget { return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, isExpanded: false) .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.r, width: 80.w, height: 24.h); }) - : "Login to view your wallet balance".needTranslation.toText12(fontWeight: FontWeight.w500, maxLine: 2), + : LocaleKeys.loginToViewWalletBalance.tr().toText12(fontWeight: FontWeight.w500, maxLine: 2), Spacer(), getIt.get().isAuthenticated ? CustomButton( @@ -396,7 +396,7 @@ class ServicesPage extends StatelessWidget { iconSize: 16.w, iconColor: AppColors.infoColor, textColor: AppColors.infoColor, - text: "Recharge".needTranslation, + text: LocaleKeys.recharge.tr(), borderWidth: 0.w, fontWeight: FontWeight.w500, borderColor: Colors.transparent, @@ -472,7 +472,7 @@ class ServicesPage extends StatelessWidget { ), ], ) - : "Login to view your medical file".needTranslation.toText12(fontWeight: FontWeight.w500, maxLine: 2), + : LocaleKeys.loginToViewMedicalFile.tr().toText12(fontWeight: FontWeight.w500, maxLine: 2), Spacer(), getIt.get().isAuthenticated ? CustomButton( @@ -481,7 +481,7 @@ class ServicesPage extends StatelessWidget { iconSize: 16.w, iconColor: AppColors.primaryRedColor, textColor: AppColors.primaryRedColor, - text: "Add Member".needTranslation, + text: LocaleKeys.addMember.tr(), borderWidth: 0.w, fontWeight: FontWeight.w500, borderColor: Colors.transparent, @@ -492,8 +492,8 @@ class ServicesPage extends StatelessWidget { DialogService dialogService = getIt.get(); medicalFileViewModel.clearAuthValues(); dialogService.showAddFamilyFileSheet( - label: "Add Family Member".needTranslation, - message: "Please fill the below field to add a new family member to your profile".needTranslation, + label: LocaleKeys.addFamilyMember.tr(), + message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(), onVerificationPress: () { medicalFileViewModel.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); }); @@ -517,7 +517,7 @@ class ServicesPage extends StatelessWidget { ], ).paddingSymmetrical(24.w, 0), SizedBox(height: 24.h), - "Health Tools".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + LocaleKeys.healthTools.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( @@ -540,7 +540,7 @@ class ServicesPage extends StatelessWidget { }, ).paddingSymmetrical(24.w, 0), SizedBox(height: 24.h), - "Support Services".needTranslation.toText18(isBold: true).paddingSymmetrical(24.w, 0), + LocaleKeys.supportServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), SizedBox(height: 16.h), Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -565,7 +565,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "Virtual Tour".needTranslation.toText12(fontWeight: FontWeight.w500) + LocaleKeys.virtualTour.tr().toText12(fontWeight: FontWeight.w500) ], ), ), @@ -594,7 +594,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "Car Parking".needTranslation.toText12(fontWeight: FontWeight.w500) + LocaleKeys.carParking.tr().toText12(fontWeight: FontWeight.w500) ], ).onPress(() { Navigator.push( @@ -633,7 +633,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "Latest News".needTranslation.toText12(fontWeight: FontWeight.w500) + LocaleKeys.latestNews.tr().toText12(fontWeight: FontWeight.w500) ], ), ), @@ -662,7 +662,7 @@ class ServicesPage extends StatelessWidget { fit: BoxFit.contain, ), SizedBox(width: 8.w), - "HMG Contact".needTranslation.toText12(fontWeight: FontWeight.w500) + LocaleKeys.hmgContact.tr().toText12(fontWeight: FontWeight.w500) ], ), ), diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index 789bc4d..f336c5b 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -113,7 +113,7 @@ class _LandingPageState extends State { myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); emergencyServicesViewModel.checkPatientERAdvanceBalance(); - myAppointmentsViewModel.getPatientAppointmentQueueDetails(); + // myAppointmentsViewModel.getPatientAppointmentQueueDetails(); notificationsViewModel.initNotificationsViewModel(); // Commented as per new requirement to remove rating popup from the app diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index 62f090e..1c16439 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -150,7 +150,7 @@ class ProfileSettingsState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h), "Habib Wallet".needTranslation.toText16(weight: FontWeight.w600, maxlines: 2).expanded, - Utils.buildSvgWithAssets(icon: AppAssets.arrow_forward), + Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), ], ), Spacer(), @@ -193,13 +193,10 @@ class ProfileSettingsState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( children: [ - actionItem(AppAssets.language_change, "Language".needTranslation, () { - showCommonBottomSheetWithoutHeight(context, - title: "Application Language".needTranslation, child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false); + actionItem(AppAssets.language_change, LocaleKeys.language.tr(context: context), () { + showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.language.tr(context: context), child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false); }, trailingLabel: Utils.appState.isArabic() ? "العربية".needTranslation : "English".needTranslation), 1.divider, - actionItem(AppAssets.accessibility, "Accessibility".needTranslation, () {}), - 1.divider, actionItem(AppAssets.bell, "Notifications Settings".needTranslation, () {}), 1.divider, actionItem(AppAssets.touch_face_id, "Touch ID / Face ID Services".needTranslation, () {}, switchValue: true), @@ -236,7 +233,7 @@ class ProfileSettingsState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( children: [ - actionItem(AppAssets.call_fill, "Contact Us".needTranslation, () { + actionItem(AppAssets.call_fill, LocaleKeys.contactUs.tr(context: context), () { launchUrl(Uri.parse("tel://" + "+966 11 525 9999")); }, trailingLabel: "011 525 9999"), 1.divider, diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 778757d..fc6fed8 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -138,6 +138,6 @@ class AppRoutes { qrParking: (context) => ChangeNotifierProvider( create: (_) => getIt(), child: const ParkingPage(), - ),} + ) }; } diff --git a/pubspec.lock b/pubspec.lock index 42b828d..7e5aaf5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -9,6 +9,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.59" + adaptive_number: + dependency: transitive + description: + name: adaptive_number + sha256: "3a567544e9b5c9c803006f51140ad544aedc79604fd4f3f2c1380003f97c1d77" + url: "https://pub.dev" + source: hosted + version: "1.0.0" amazon_payfort: dependency: "direct main" description: @@ -61,10 +69,10 @@ packages: dependency: "direct main" description: name: barcode_scan2 - sha256: "0f3eb7c0a0c80a0f65d3fa88737544fdb6d27127a4fad566e980e626f3fb76e1" + sha256: "50b286021c644deee71e20a06c1709adc6594e39d65024ced0458cc1e3ff298e" url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.6.0" boolean_selector: dependency: transitive description: @@ -193,6 +201,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + dart_jsonwebtoken: + dependency: "direct main" + description: + name: dart_jsonwebtoken + sha256: "0de65691c1d736e9459f22f654ddd6fd8368a271d4e41aa07e53e6301eff5075" + url: "https://pub.dev" + source: hosted + version: "3.3.1" dartz: dependency: "direct main" description: @@ -218,6 +234,38 @@ packages: url: "https://github.com/bardram/device_calendar" source: git version: "4.3.1" + device_calendar_plus: + dependency: "direct main" + description: + name: device_calendar_plus + sha256: d11a70d98eb123e8eb09fdcfaf220ca4f1aa65a1512e12092f176f4b54983507 + url: "https://pub.dev" + source: hosted + version: "0.3.3" + device_calendar_plus_android: + dependency: transitive + description: + name: device_calendar_plus_android + sha256: a341ef29fa0251251287d63c1d009dfd35c1459dc6a129fd5e03f5ac92d8d7ff + url: "https://pub.dev" + source: hosted + version: "0.3.3" + device_calendar_plus_ios: + dependency: transitive + description: + name: device_calendar_plus_ios + sha256: "3b2f84ce1ed002be8460e214a3229e66748bbaad4077603f2c734d67c42033ff" + url: "https://pub.dev" + source: hosted + version: "0.3.3" + device_calendar_plus_platform_interface: + dependency: transitive + description: + name: device_calendar_plus_platform_interface + sha256: "0ce7511c094ca256831a48e16efe8f1e97e7bd00a5ff3936296ffd650a1d76b5" + url: "https://pub.dev" + source: hosted + version: "0.3.3" device_info_plus: dependency: "direct main" description: @@ -258,6 +306,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.0.2" + ed25519_edwards: + dependency: transitive + description: + name: ed25519_edwards + sha256: "6ce0112d131327ec6d42beede1e5dfd526069b18ad45dcf654f15074ad9276cd" + url: "https://pub.dev" + source: hosted + version: "0.3.1" equatable: dependency: "direct main" description: @@ -431,6 +487,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.1" + flutter_callkit_incoming: + dependency: "direct main" + description: + name: flutter_callkit_incoming + sha256: "3589deb8b71e43f2d520a9c8a5240243f611062a8b246cdca4b1fda01fbbf9b8" + url: "https://pub.dev" + source: hosted + version: "3.0.0" flutter_hooks: dependency: transitive description: @@ -634,10 +698,10 @@ packages: dependency: "direct main" description: name: flutter_zoom_videosdk - sha256: "22731485fe48472a34ff0c7e787a382f5e1ec662fd89186e58e760974fc2a0cb" + sha256: "46a4dea664b1c969099328a499c198a1755adf9ac333dea28bea5187910b3bf9" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.1.10" fluttertoast: dependency: "direct main" description: @@ -894,6 +958,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + huawei_health: + dependency: "direct main" + description: + name: huawei_health + sha256: "52fb9990e1fc857e2fa1b1251dde63b2146086a13b2d9c50bdfc3c4f715c8a12" + url: "https://pub.dev" + source: hosted + version: "6.16.0+300" huawei_location: dependency: "direct main" description: @@ -923,10 +995,10 @@ packages: dependency: transitive description: name: image_picker_android - sha256: "8dfe08ea7fcf7467dbaf6889e72eebd5e0d6711caae201fdac780eb45232cd02" + sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e" url: "https://pub.dev" source: hosted - version: "0.8.13+3" + version: "0.8.13+1" image_picker_for_web: dependency: transitive description: @@ -1075,18 +1147,18 @@ packages: dependency: transitive description: name: local_auth_android - sha256: "1ee0e63fb8b5c6fa286796b5fb1570d256857c2f4a262127e728b36b80a570cf" + sha256: "48924f4a8b3cc45994ad5993e2e232d3b00788a305c1bf1c7db32cef281ce9a3" url: "https://pub.dev" source: hosted - version: "1.0.53" + version: "1.0.52" local_auth_darwin: dependency: transitive description: name: local_auth_darwin - sha256: "699873970067a40ef2f2c09b4c72eb1cfef64224ef041b3df9fdc5c4c1f91f49" + sha256: "0e9706a8543a4a2eee60346294d6a633dd7c3ee60fae6b752570457c4ff32055" url: "https://pub.dev" source: hosted - version: "1.6.1" + version: "1.6.0" local_auth_platform_interface: dependency: transitive description: @@ -1147,10 +1219,10 @@ packages: dependency: "direct main" description: name: lottie - sha256: "8ae0be46dbd9e19641791dc12ee480d34e1fd3f84c749adc05f3ad9342b71b95" + sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 url: "https://pub.dev" source: hosted - version: "3.3.2" + version: "3.3.1" manage_calendar_events: dependency: "direct main" description: @@ -1407,6 +1479,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "92aa3841d083cc4b0f4709b5c74fd6409a3e6ba833ffc7dc6a8fee096366acf5" + url: "https://pub.dev" + source: hosted + version: "4.0.0" posix: dependency: transitive description: @@ -1419,10 +1499,10 @@ packages: dependency: transitive description: name: protobuf - sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" + sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "6.0.0" provider: dependency: "direct main" description: @@ -1463,6 +1543,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + scrollable_positioned_list: + dependency: "direct main" + description: + name: scrollable_positioned_list + sha256: "1b54d5f1329a1e263269abc9e2543d90806131aa14fe7c6062a8054d57249287" + url: "https://pub.dev" + source: hosted + version: "0.3.8" share_plus: dependency: "direct main" description: @@ -1600,10 +1688,10 @@ packages: dependency: transitive description: name: sqflite_android - sha256: ecd684501ebc2ae9a83536e8b15731642b9570dc8623e0073d227d0ee2bfea88 + sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b" url: "https://pub.dev" source: hosted - version: "2.4.2+2" + version: "2.4.1" sqflite_common: dependency: transitive description: @@ -1725,7 +1813,7 @@ packages: source: hosted version: "2.1.5" timezone: - dependency: transitive + dependency: "direct main" description: name: timezone sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 @@ -1752,10 +1840,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "199bc33e746088546a39cc5f36bac5a278c5e53b40cb3196f99e7345fdcfae6b" + sha256: "81777b08c498a292d93ff2feead633174c386291e35612f8da438d6e92c4447e" url: "https://pub.dev" source: hosted - version: "6.3.22" + version: "6.3.20" url_launcher_ios: dependency: transitive description: @@ -1888,10 +1976,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 url: "https://pub.dev" source: hosted - version: "15.0.2" + version: "15.0.0" wakelock_plus: dependency: transitive description: @@ -1928,10 +2016,10 @@ packages: dependency: transitive description: name: webview_flutter_android - sha256: "21507ea5a326ceeba4d29dea19e37d92d53d9959cfc746317b9f9f7a57418d87" + sha256: "9a25f6b4313978ba1c2cda03a242eea17848174912cfb4d2d8ee84a556f248e3" url: "https://pub.dev" source: hosted - version: "4.10.3" + version: "4.10.1" webview_flutter_platform_interface: dependency: transitive description: @@ -1944,10 +2032,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: fea63576b3b7e02b2df8b78ba92b48ed66caec2bb041e9a0b1cbd586d5d80bfd + sha256: fb46db8216131a3e55bcf44040ca808423539bc6732e7ed34fb6d8044e3d512f url: "https://pub.dev" source: hosted - version: "3.23.1" + version: "3.23.0" win32: dependency: transitive description: @@ -1981,5 +2069,5 @@ packages: source: hosted version: "6.6.1" sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.35.0" + dart: ">=3.8.1 <4.0.0" + flutter: ">=3.32.0"