Localization #261

Merged
khansultan1 merged 3 commits from dev_aamir into master 1 day ago

@ -303,7 +303,7 @@
"labSubtitle": "نتائج", "labSubtitle": "نتائج",
"medicines": "الأدوية", "medicines": "الأدوية",
"medicinesSubtitle": "الوصفات", "medicinesSubtitle": "الوصفات",
"vitalSigns": "علامات حيوية", "vitalSigns": "العلامات الحيوية",
"vitalSignsSubTitle": "التقارير", "vitalSignsSubTitle": "التقارير",
"vitalSignNormal": "طبيعي", "vitalSignNormal": "طبيعي",
"vitalSignLow": "منخفض", "vitalSignLow": "منخفض",
@ -335,7 +335,7 @@
"monthly": "شهري", "monthly": "شهري",
"monthlySubtitle": "التقرير", "monthlySubtitle": "التقرير",
"sick": "مريض", "sick": "مريض",
"sick2": "المريضة", "sick2": "المرضية",
"sickSubtitle": "الإجازات", "sickSubtitle": "الإجازات",
"myBalance": "رصيدي", "myBalance": "رصيدي",
"myBalanceSubtitle": "الرصيد", "myBalanceSubtitle": "الرصيد",
@ -349,7 +349,7 @@
"askYourSubtitle": "طبيبك", "askYourSubtitle": "طبيبك",
"internet": "الإنترنت", "internet": "الإنترنت",
"internetSubtitle": "الاقتران", "internetSubtitle": "الاقتران",
"chatbot": "الدرد<EFBFBD><EFBFBD>ة الآلية", "chatbot": "الدردشة الآلية",
"chatbotSubtitle": "", "chatbotSubtitle": "",
"timeLine": "الخط الزمني", "timeLine": "الخط الزمني",
"labOrders": "طلبات المختبر", "labOrders": "طلبات المختبر",
@ -835,7 +835,7 @@
"allSet": "الآن يمكنك تسجيل الدخول باستخدام بصمة الوجه أو البصمة", "allSet": "الآن يمكنك تسجيل الدخول باستخدام بصمة الوجه أو البصمة",
"quickLogin": "الدخول السريع", "quickLogin": "الدخول السريع",
"enableQuickLogin": "تسجيل الدخول السريع", "enableQuickLogin": "تسجيل الدخول السريع",
"enableQuickLoginBtn": "الدخول السريع", "enableQuickLoginBtn": " تفعيل الدخول السريع",
"enableMsg": "تمكين تسجيل الدخول السريع سيسمح بالتحقق من خلال Face ID / Biometric الخاص بجهازك الحالي", "enableMsg": "تمكين تسجيل الدخول السريع سيسمح بالتحقق من خلال Face ID / Biometric الخاص بجهازك الحالي",
"notNow": "ليس الآن", "notNow": "ليس الآن",
"pendingActivation": "في انتظار التنشيط", "pendingActivation": "في انتظار التنشيط",
@ -946,7 +946,7 @@
"scheduledConsultation": "استشارة مجدولة", "scheduledConsultation": "استشارة مجدولة",
"pharmaLiveCare": "لايف كير الصيدلية", "pharmaLiveCare": "لايف كير الصيدلية",
"notSureHelpMeChooseClinic": "هل تريد مساعدة في اختيار العياة؟", "notSureHelpMeChooseClinic": "هل تريد مساعدة في اختيار العياة؟",
"mentionYourSymptomsAndFindDoctors": "اذكر أعراضك واعثر على قائمة الأطباء وفقاً لذلك", "mentionYourSymptomsAndFindDoctors": "أدخل حالتك الصحية للحصول على قائمة الأطباء",
"immediateService": "خدمة فورية", "immediateService": "خدمة فورية",
"noNeedToWaitGetMedicalConsultation": "لا حاجة للانتظار، ستحصل على استشارة طبية فورية عبر مكالمة فيديو", "noNeedToWaitGetMedicalConsultation": "لا حاجة للانتظار، ستحصل على استشارة طبية فورية عبر مكالمة فيديو",
"noVisitRequired": "لا حاجة للزيارة", "noVisitRequired": "لا حاجة للزيارة",
@ -1031,7 +1031,7 @@
"upcoming": "القادمة", "upcoming": "القادمة",
"completed": "المكتملة", "completed": "المكتملة",
"noAppointmentsYet": "ليس لديك أي مواعيد بعد.", "noAppointmentsYet": "ليس لديك أي مواعيد بعد.",
"viewProfile": "عرض الملف الشخصي", "viewProfile": "الملف الشخصي",
"choosePreferredHospitalForService": "اختر المستشفى المفضل لديك للخدمة", "choosePreferredHospitalForService": "اختر المستشفى المفضل لديك للخدمة",
"noHospitalsFound": "لم يتم العثور على مستشفيات", "noHospitalsFound": "لم يتم العثور على مستشفيات",
"cancelOrderConfirmation": "هل أنت متأكد أنك تريد إلغاء هذا الطلب؟", "cancelOrderConfirmation": "هل أنت متأكد أنك تريد إلغاء هذا الطلب؟",
@ -1111,16 +1111,16 @@
"selectDetails": "اختر التفاصيل", "selectDetails": "اختر التفاصيل",
"work": "العمل", "work": "العمل",
"pick": "استلام", "pick": "استلام",
"insideTheHome": "داخل المنزل", "insideTheHome": "من المنزل",
"haveAnyAppointment": "هل لديك أي موعد", "haveAnyAppointment": "هل لديك أي موعد",
"amountPaidAtHospital": "الدفع عند الوصول للمستشفى", "amountPaidAtHospital": "الدفع عند الوصول للمستشفى",
"submitRequest": "تأكيد الطلب", "submitRequest": "تأكيد الطلب",
"enterPickupLocationManually": "تحديد موقع الاستلام", "enterPickupLocationManually": "تحديد موقع الاستلام",
"enterPickupLocation": "أدخل موقع الاستلام", "enterPickupLocation": "أدخل موقع الاستلام",
"trackingDetails": "تفاصيل التتبع", "trackingDetails": "استدعاء سيارة إسعاف",
"cancelRequest": "إلغاء الطلب", "cancelRequest": "إلغاء الطلب",
"shareLocationWhatsapp": "مشاركة موقعك المباشر على واتساب", "shareLocationWhatsapp": "مشاركة موقعك المباشر على واتساب",
"pleaseWaitForCall": تتلقى مكالمة لتأكيد طلبك قريباً.", "pleaseWaitForCall": نتصل بك قريبًا لتأكيد الطلب",
"toHospitalLower": "إلى المستشفى", "toHospitalLower": "إلى المستشفى",
"contact": "اتصال", "contact": "اتصال",
"failed": "فشل", "failed": "فشل",
@ -1129,7 +1129,7 @@
"onTheWayToHospital": " في الطريق إلى المستشفى", "onTheWayToHospital": " في الطريق إلى المستشفى",
"arrivedAtHospital": "وصل إلى المستشفى", "arrivedAtHospital": "وصل إلى المستشفى",
"orderCancel": "إلغاء الطلب", "orderCancel": "إلغاء الطلب",
"emergencyCheckIn": "تسجيل الطوارئ الإلكتروني", "emergencyCheckIn": "تسجيل الوصول في الطواريء",
"erOnlineCheckInDescription": "تتيح هذه الخدمة للمرضى تسجيل موعد الطوارئ قبل الوصول.", "erOnlineCheckInDescription": "تتيح هذه الخدمة للمرضى تسجيل موعد الطوارئ قبل الوصول.",
"erOnlineCheckInSuccess": "تم تسجيل وصول الطوارئ بنجاح. الرجاء التوجه إلى منطقة الانتظار.", "erOnlineCheckInSuccess": "تم تسجيل وصول الطوارئ بنجاح. الرجاء التوجه إلى منطقة الانتظار.",
"erOnlineCheckInError": "حدث خطأ غير متوقع أثناء عملية التسجيل. يرجى التواصل مع الدعم.", "erOnlineCheckInError": "حدث خطأ غير متوقع أثناء عملية التسجيل. يرجى التواصل مع الدعم.",
@ -1157,7 +1157,7 @@
"checkingYourERAppointmentStatus": "يرجى الانتظار…", "checkingYourERAppointmentStatus": "يرجى الانتظار…",
"transportOptions": "خيارات النقل", "transportOptions": "خيارات النقل",
"selectHospitalForAdvancePayment": "يرجى تحديد المستشفى أولاً.", "selectHospitalForAdvancePayment": "يرجى تحديد المستشفى أولاً.",
"recharge": "اضافة رصيد", "recharge": "شحن المحفظة",
"activityLevel": "مستوى النشاط", "activityLevel": "مستوى النشاط",
"selectActivityLevel": "حدد مستوى النشاط", "selectActivityLevel": "حدد مستوى النشاط",
"almostInactive": "غير نشط تقريبًا (بدون تمارين)", "almostInactive": "غير نشط تقريبًا (بدون تمارين)",
@ -1245,14 +1245,13 @@
"healthCalculatorsServices": "حاسبات\nالصحة", "healthCalculatorsServices": "حاسبات\nالصحة",
"healthConvertersServices": "محولات\nالصحة", "healthConvertersServices": "محولات\nالصحة",
"smartWatchesServices": "الساعات\nالذكية", "smartWatchesServices": "الساعات\nالذكية",
"exploreServices": "تصفح الخدمات", "exploreServices": "قائمة الخدمات",
"medicalAndCareServices": "خدمات الرعاية الطبية", "medicalAndCareServices": "خدمات الرعاية الطبية",
"hmgServices": "خدمات مجموعة الحبيب الطبية", "hmgServices": "خدمات مجموعة الحبيب الطبية",
"personalServices": "الخدمات الشخصية", "personalServices": "الخدمات الشخصية",
"habibWallet": "محفظة الحبيب", "habibWallet": "محفظة الحبيب",
"habibWallet2": "المحفظة", "habibWallet2": "المحفظة",
"loginToViewWalletBalance": "سجل الدخول لعرض رصيد محفظتك", "loginToViewWalletBalance": "سجل الدخول لعرض رصيد محفظتك",
"recharge": "إعادة الشحن",
"loginToViewMedicalFile": "سجل الدخول لعرض ملفك الطبي", "loginToViewMedicalFile": "سجل الدخول لعرض ملفك الطبي",
"addMember": "إضافة عضو", "addMember": "إضافة عضو",
"addFamilyMember": "إضافة فرد من العائلة", "addFamilyMember": "إضافة فرد من العائلة",
@ -1307,7 +1306,7 @@
"noInsuranceApprovals": "لم تحصل على أي موافقات تأمينية حتى الآن.", "noInsuranceApprovals": "لم تحصل على أي موافقات تأمينية حتى الآن.",
"noInsuranceWithHMG": "ليس لديك تأمين مسجل لدى مجموعة الحبيب الطبية.", "noInsuranceWithHMG": "ليس لديك تأمين مسجل لدى مجموعة الحبيب الطبية.",
"referenceRange": "النطاق المرجعي", "referenceRange": "النطاق المرجعي",
"downloadReport": "تحميل التقارير", "downloadReport": "تحميل",
"generatingReport": "جارٍ إنشاء التقرير، يرجى الانتظار...", "generatingReport": "جارٍ إنشاء التقرير، يرجى الانتظار...",
"noLabResults": "لا يوجد نتائج", "noLabResults": "لا يوجد نتائج",
"labResultDetails": "تفاصيل نتائج المختبر", "labResultDetails": "تفاصيل نتائج المختبر",
@ -1319,22 +1318,22 @@
"results": "نتائج", "results": "نتائج",
"viewResults": "عرض النتائج", "viewResults": "عرض النتائج",
"rebook": "إعادة الحجز", "rebook": "إعادة الحجز",
"noOphthalmologyAppointments": "لم يتم العثور على أي مواعيد في قسم طب العيون...", "noOphthalmologyAppointments": "لم يتم العثور على أي مواعيد",
"noVitalSignsRecordedYet": "لا توجد علامات حيوية مسجلة بعد", "noVitalSignsRecordedYet": "لا توجد علامات حيوية",
"appointmentsAndVisits": "المواعيد", "appointmentsAndVisits": "المواعيد",
"labAndRadiology": "المختبر والأشعة", "labAndRadiology": "المختبر والأشعة",
"activeMedicationsAndPrescriptions": "الوصفات الطبية", "activeMedicationsAndPrescriptions": "الوصفات الطبية",
"allPrescriptions": "جميع الوصفات", "allPrescriptions": "جميع الوصفات",
"allMedications": "جميع الأدوية", "allMedications": "جميع الأدوية",
"youDontHaveAnyPrescriptionsYet": "ليس لديك أي وصفات طبية بعد.", "youDontHaveAnyPrescriptionsYet": "ليس لديك أي وصفات طبية",
"youDontHaveAnyCompletedVisitsYet": "ليس لديك أي زيارات مكتملة بعد", "youDontHaveAnyCompletedVisitsYet": "ليس لديك أي زيارات مكتملة",
"others": "سجلات أخرى", "others": "خدمات أخرى",
"allergyInfo": "معلومات الحساسية", "allergyInfo": "معلومات الحساسية",
"vaccineInfo": "معلومات اللقاحات", "vaccineInfo": "معلومات اللقاحات",
"updateInsuranceInfo": "تحديث التأمين", "updateInsuranceInfo": "تحديث التأمين",
"myInvoicesList": "قائمة فواتيري", "myInvoicesList": "و الفواتير",
"ancillaryOrdersList": "قائمة الطلبات المساعدة", "ancillaryOrdersList": "الخدمات الطبية المساندة",
"youDontHaveAnySickLeavesYet": "ليس لديك أي إجازات مرضية بعد.", "youDontHaveAnySickLeavesYet": "ليس لديك أي إجازات مرضية",
"medicalReports": "التقارير الطبية", "medicalReports": "التقارير الطبية",
"sickLeaveReport": "تقرير الإجازة المرضية", "sickLeaveReport": "تقرير الإجازة المرضية",
"weightTracker": "متتبع الوزن", "weightTracker": "متتبع الوزن",
@ -1342,7 +1341,7 @@
"internetPairing": "الاقتران بالإنترنت", "internetPairing": "الاقتران بالإنترنت",
"requested": "مطلوب", "requested": "مطلوب",
"readyToDownload": "جاهز للتحميل", "readyToDownload": "جاهز للتحميل",
"youDontHaveAnyMedicalReportsYet": "ليس لديك أي تقارير طبية بعد.", "youDontHaveAnyMedicalReportsYet": "ليس لديك أي تقارير طبية",
"requestMedicalReport": "طلب تقرير طبي", "requestMedicalReport": "طلب تقرير طبي",
"youDoNotHaveAnyAppointmentsToRequestMedicalReport": "ليس لديك أي مواعيد لطلب تقرير طبي.", "youDoNotHaveAnyAppointmentsToRequestMedicalReport": "ليس لديك أي مواعيد لطلب تقرير طبي.",
"areYouSureYouWantToRequestMedicalReport": "هل أنت متأكد أنك تريد طلب تقرير طبي لهذا الموعد؟", "areYouSureYouWantToRequestMedicalReport": "هل أنت متأكد أنك تريد طلب تقرير طبي لهذا الموعد؟",
@ -1377,7 +1376,7 @@
"parkingDate": "التاريخ: {date}", "parkingDate": "التاريخ: {date}",
"parkedSince": "متوقف منذ: {time}", "parkedSince": "متوقف منذ: {time}",
"resetDirection": "إعادة تعيين الاتجاه", "resetDirection": "إعادة تعيين الاتجاه",
"noPrescriptionOrdersYet": "ليس لديك أي طلبات وصفات طبية حتى الآن.", "noPrescriptionOrdersYet": "ليس لديك أي طلبات.",
"fetchingPrescriptionPDFPleaseWait": "جاري جلب ملف الوصفة الطبية، يرجى الانتظار...", "fetchingPrescriptionPDFPleaseWait": "جاري جلب ملف الوصفة الطبية، يرجى الانتظار...",
"ratingValue": "التقييم: {rating}", "ratingValue": "التقييم: {rating}",
"downloadPrescription": "تحميل الوصفة الطبية", "downloadPrescription": "تحميل الوصفة الطبية",
@ -1570,7 +1569,7 @@
"liveCareServiceDesc": "احصل على استشارة طبية من طبيب مختص عبر مكالمة فيديو", "liveCareServiceDesc": "احصل على استشارة طبية من طبيب مختص عبر مكالمة فيديو",
"bloodGroup": "فصيلة الدم: {bloodType}", "bloodGroup": "فصيلة الدم: {bloodType}",
"medicalServices": "الخدمات الطبية", "medicalServices": "الخدمات الطبية",
"insuranceAndPayments": "التأمين والمدفوعات", "insuranceAndPayments": "التأمين و الفواتير",
"trackerAndOthers": "المتتبع وأخرى", "trackerAndOthers": "المتتبع وأخرى",
"bmi": "مؤشر كتلة الجسم", "bmi": "مؤشر كتلة الجسم",
"yesPleaseINeedHelp": "نعم، احتاج مساعدة", "yesPleaseINeedHelp": "نعم، احتاج مساعدة",
@ -1582,7 +1581,7 @@
"disclaimer": "إخلاء مسؤولية", "disclaimer": "إخلاء مسؤولية",
"thisAboveInfo": "تم تحليل نتائج المختبرهذه بواسطة الذكاء الاصطناعي، وهي لا تُعدّ نصيحة طبية. استشر طبيبك المختص للتشخيص والعلاج.", "thisAboveInfo": "تم تحليل نتائج المختبرهذه بواسطة الذكاء الاصطناعي، وهي لا تُعدّ نصيحة طبية. استشر طبيبك المختص للتشخيص والعلاج.",
"aiDisclaimer": "سيتم مشاركة بيانات نتائج تحاليلك المخبرية بشكل آمن مع خدمة الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في تقديم رؤى صحية مُخصصة. هل ترغب في المتابعة؟", "aiDisclaimer": "سيتم مشاركة بيانات نتائج تحاليلك المخبرية بشكل آمن مع خدمة الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في تقديم رؤى صحية مُخصصة. هل ترغب في المتابعة؟",
"consent": "نتائج المختبر", "consent": "تحليل الذكاء الاصطناعي",
"bmiNormalDescription": "مؤشر كتلة جسمك ضمن المعدل الصحي. استمر في اتباع نظام غذائي متوازن، وممارسة النشاط البدني بانتظام، وإجراء الفحوصات الدورية للحفاظ على صحة جيدة. راقب أي تغييرات ملحوظة مع مرور الوقت.", "bmiNormalDescription": "مؤشر كتلة جسمك ضمن المعدل الصحي. استمر في اتباع نظام غذائي متوازن، وممارسة النشاط البدني بانتظام، وإجراء الفحوصات الدورية للحفاظ على صحة جيدة. راقب أي تغييرات ملحوظة مع مرور الوقت.",
"bmiUnderweightDescription": "يشير مؤشر كتلة الجسم إلى أنك تعاني من نقص الوزن. لذا، يُنصح بزيادة السعرات الحرارية المتناولة من خلال تناول الأطعمة الغنية بالعناصر الغذائية، وممارسة تمارين المقاومة لبناء العضلات، واستشارة أخصائي رعاية صحية للتحقق من وجود أسباب كامنة.", "bmiUnderweightDescription": "يشير مؤشر كتلة الجسم إلى أنك تعاني من نقص الوزن. لذا، يُنصح بزيادة السعرات الحرارية المتناولة من خلال تناول الأطعمة الغنية بالعناصر الغذائية، وممارسة تمارين المقاومة لبناء العضلات، واستشارة أخصائي رعاية صحية للتحقق من وجود أسباب كامنة.",
"bmiOverweightDescription": "يشير مؤشر كتلة الجسم إلى زيادة الوزن. لذا، يُنصح بالسعي إلى إنقاص الوزن تدريجياً وبشكل مستدام من خلال تقليل السعرات الحرارية بشكل معتدل، وممارسة النشاط البدني بانتظام، واختيار الأطعمة الصحية. استشر طبيبك قبل إجراء أي تغييرات جذرية في نمط حياتك.", "bmiOverweightDescription": "يشير مؤشر كتلة الجسم إلى زيادة الوزن. لذا، يُنصح بالسعي إلى إنقاص الوزن تدريجياً وبشكل مستدام من خلال تقليل السعرات الحرارية بشكل معتدل، وممارسة النشاط البدني بانتظام، واختيار الأطعمة الصحية. استشر طبيبك قبل إجراء أي تغييرات جذرية في نمط حياتك.",
@ -1717,7 +1716,7 @@
"doctorRatingAppointment": "طبيب\nتصنيف", "doctorRatingAppointment": "طبيب\nتصنيف",
"ratingSubmitted": "تم إرسال التقييم", "ratingSubmitted": "تم إرسال التقييم",
"rateTheDoctor": "يرجى تقييم الطبيب", "rateTheDoctor": "يرجى تقييم الطبيب",
"downloadInvoice": نزيل الفاتورة", "downloadInvoice": حميل",
"approvalDetails": "تفاصيل الموافقة", "approvalDetails": "تفاصيل الموافقة",
"obese": "سمين", "obese": "سمين",
"overWeight": "وزن زائد", "overWeight": "وزن زائد",
@ -1764,7 +1763,7 @@
"errorFetchingData": "حدث خطأ أثناء تحميل البيانات", "errorFetchingData": "حدث خطأ أثناء تحميل البيانات",
"negative": "سلبي", "negative": "سلبي",
"calculateCaloriesBasedOnFactors": "حساب السعرات الحرارية اليومية بناءً على عدة عوامل مثل الطول، الوزن، العمر، الجنس، والنشاط البدني اليومي.", "calculateCaloriesBasedOnFactors": "حساب السعرات الحرارية اليومية بناءً على عدة عوامل مثل الطول، الوزن، العمر، الجنس، والنشاط البدني اليومي.",
"conformationCall": تتلقى مكالمة لتأكيد طلبك قريباً.", "conformationCall": نتصل بك قريبًا لتأكيد الطلب",
"radiologyLabResults": "نتائج الأشعة", "radiologyLabResults": "نتائج الأشعة",
"disclaimerRadiology": "تم تحليل نتائج الأشعة هذه بواسطة الذكاء الاصطناعي، وهي لا تُعدّ نصيحة طبية. استشر طبيبك المختص للتشخيص والعلاج.", "disclaimerRadiology": "تم تحليل نتائج الأشعة هذه بواسطة الذكاء الاصطناعي، وهي لا تُعدّ نصيحة طبية. استشر طبيبك المختص للتشخيص والعلاج.",
"enterIdentificationNumberWithNoStar": "أدخل رقم الهوية", "enterIdentificationNumberWithNoStar": "أدخل رقم الهوية",
@ -1776,6 +1775,11 @@
"locationServicesDisabled": "حالة الطقس غير متوفرة لتعطيل خدمات الموقع. يرجى تفعيل خدمات الموقع لتتمكن من رؤية معلومات الطقس.", "locationServicesDisabled": "حالة الطقس غير متوفرة لتعطيل خدمات الموقع. يرجى تفعيل خدمات الموقع لتتمكن من رؤية معلومات الطقس.",
"selectDateTimeKey": "اختيار", "selectDateTimeKey": "اختيار",
"medicalKey": "الطبية", "medicalKey": "الطبية",
"doctors2": "أطباء",
"illurgyInfomation": "الحساسية",
"vaccineInfomation": "التطعيمات",
"approvals1": "موافقات",
"convertBloodcholesterolInfo":"حول قيمة كوليسترول الدم بين ملجم/ديسيلتر و مليمول/لتر",
"carbsAlert": "حساب نسب المغذيات (الكربوهيدرات ،البروتين والدهون) بالسعرات الحرارية والقرامات وفقا لنسب محددة مسبقا", "carbsAlert": "حساب نسب المغذيات (الكربوهيدرات ،البروتين والدهون) بالسعرات الحرارية والقرامات وفقا لنسب محددة مسبقا",
"bodyFatAlert": "يحسب بناءً على الحجم", "bodyFatAlert": "يحسب بناءً على الحجم",
"ibwAlert": "حساب الوزن المثالي بناءً على الطول، الوزن، وبنية الجسم", "ibwAlert": "حساب الوزن المثالي بناءً على الطول، الوزن، وبنية الجسم",
@ -1783,8 +1787,7 @@
"selectBloodGroup": "اختر الفصيلة", "selectBloodGroup": "اختر الفصيلة",
"routePrescription": "طريقة الاستخدام", "routePrescription": "طريقة الاستخدام",
"noNearestER": "لا يوجد طوارئ قريب منك", "noNearestER": "لا يوجد طوارئ قريب منك",
"loginToUseServiceLiveCare": "تحتاج إلى تسجيل الدخول لاستخدام هذه الخدمة" "loginToUseServiceLiveCare": "تحتاج إلى تسجيل الدخول لاستخدام هذه الخدمة",
"convertBloodcholesterolInfo":"حول قيمة كوليسترول الدم بين ملجم/ديسيلتر و مليمول/لتر",
"mldl": "مليجرام لكل ديسيلتر", "mldl": "مليجرام لكل ديسيلتر",
"mmol": "ملي مول لكل لتر", "mmol": "ملي مول لكل لتر",
"triglycerideInfo": "تغيير وحدات القياس بين مليجرام لكل ديسيلتر و ملي مول لكل لتر", "triglycerideInfo": "تغيير وحدات القياس بين مليجرام لكل ديسيلتر و ملي مول لكل لتر",

@ -825,7 +825,7 @@
"allSet": "Now you can login with Face ID or Biometric", "allSet": "Now you can login with Face ID or Biometric",
"quickLogin": "Quick Login", "quickLogin": "Quick Login",
"enableQuickLogin": "Enable Quick Login", "enableQuickLogin": "Enable Quick Login",
"enableQuickLoginBtn": "Quick Login", "enableQuickLoginBtn": "Enable Quick Login",
"enableMsg": "Enabling the quick login will verify through your existing device Face ID / Biometric", "enableMsg": "Enabling the quick login will verify through your existing device Face ID / Biometric",
"notNow": "Not Now", "notNow": "Not Now",
"pendingActivation": "Pending Activation", "pendingActivation": "Pending Activation",
@ -1320,7 +1320,7 @@
"others": "Others", "others": "Others",
"allergyInfo": "Allergy Info", "allergyInfo": "Allergy Info",
"vaccineInfo": "Vaccine Info", "vaccineInfo": "Vaccine Info",
"updateInsuranceInfo": "Update Insurance", "updateInsuranceInfo": "Insurance Update",
"myInvoicesList": "My Invoices List", "myInvoicesList": "My Invoices List",
"ancillaryOrdersList": "Ancillary Orders List", "ancillaryOrdersList": "Ancillary Orders List",
"youDontHaveAnySickLeavesYet": "You don't have any sick leaves yet.", "youDontHaveAnySickLeavesYet": "You don't have any sick leaves yet.",
@ -1540,7 +1540,7 @@
"route": "Route", "route": "Route",
"frequency": "Frequency", "frequency": "Frequency",
"reminders": "Reminders", "reminders": "Reminders",
"reminderAddedToCalendar": "Reminder added to calendar", "reminderAddedToCalendar": "Reminder added to calendar",
"errorWhileSettingCalendar": "Error while setting calendar: {error}", "errorWhileSettingCalendar": "Error while setting calendar: {error}",
"instructions": "Instructions", "instructions": "Instructions",
"requests": "Requests", "requests": "Requests",
@ -1780,7 +1780,11 @@
"selectSmartWatch": "Select", "selectSmartWatch": "Select",
"selectBloodDonationCity": "Select City", "selectBloodDonationCity": "Select City",
"selectBloodDonationGender": "Select Gender", "selectBloodDonationGender": "Select Gender",
"selectBloodType": "Select Blood Type" "selectBloodType": "Select Blood Type",
"doctors2": "Doctor",
"illurgyInfomation": "Allergy",
"vaccineInfomation": "Vaccine",
"approvals1": "Approvals"
} }

@ -1120,7 +1120,7 @@ class AuthenticationViewModel extends ChangeNotifier {
_dialogService.showPhoneNumberPickerSheet( _dialogService.showPhoneNumberPickerSheet(
// label: "Where would you like to receive OTP?", // label: "Where would you like to receive OTP?",
label: LocaleKeys.receiveOtpToast.tr(), label: LocaleKeys.receiveOtpToast.tr(),
message: "Please select from the below options to receive OTP.", message: _appState.isArabic() ? "يرجى الاختيار من الخيارات أدناه لاستلام رمز التحقق." "Please select from the below options to receive OTP.",
onSMSPress: () { onSMSPress: () {
checkUserAuthentication(otpTypeEnum: OTPTypeEnum.sms); checkUserAuthentication(otpTypeEnum: OTPTypeEnum.sms);
}, },

@ -34,13 +34,25 @@ class HealthTrackersViewModel extends ChangeNotifier {
String? get errorMessage => _errorMessage; String? get errorMessage => _errorMessage;
List<String> get durationFilters => ["Week", "Month", "Year"]; final List<String> durationFiltersEn = ["Week", "Month", "Year"];
final List<String> durationFiltersAr = ["أسبوع", "شهر", "سنة"];
List<String> get durationFilters => getIt.get<AppState>().isArabic() ? durationFiltersAr : durationFiltersEn;
String _selectedDuration = "Week"; String _selectedDuration = "Week";
bool _isGraphView = true; bool _isGraphView = true;
String get selectedDurationFilter => _selectedDuration; String get selectedDurationFilter => _selectedDuration;
// Get the localized display value for the selected duration
String get selectedDurationFilterDisplay {
final index = durationFiltersEn.indexOf(_selectedDuration);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? durationFiltersAr[index] : durationFiltersEn[index];
}
return _selectedDuration;
}
bool get isGraphView => _isGraphView; bool get isGraphView => _isGraphView;
final List<String> bloodSugarUnit = ['mg/dlt', 'mol/L']; final List<String> bloodSugarUnit = ['mg/dlt', 'mol/L'];
@ -90,7 +102,15 @@ class HealthTrackersViewModel extends ChangeNotifier {
// Setters with notification // Setters with notification
void setFilterDuration(String duration) async { void setFilterDuration(String duration) async {
_selectedDuration = duration; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = durationFiltersAr.indexOf(duration);
if (index >= 0 && index < durationFiltersEn.length) {
_selectedDuration = durationFiltersEn[index];
}
} else {
_selectedDuration = duration;
}
notifyListeners(); notifyListeners();
} }
@ -107,26 +127,73 @@ class HealthTrackersViewModel extends ChangeNotifier {
// ==================== WEIGHT FORM FIELDS ==================== // ==================== WEIGHT FORM FIELDS ====================
final List<String> weightUnits = ['kg', 'lb']; final List<String> weightUnits = ['kg', 'lb'];
final List<String> weightUnitsEn = ['kg', 'lb'];
final List<String> weightUnitsAr = ['كجم', 'رطل'];
String _selectedWeightUnit = 'kg'; String _selectedWeightUnit = 'kg';
String get selectedWeightUnit => _selectedWeightUnit; String get selectedWeightUnit => _selectedWeightUnit;
List<String> getWeightUnitsList() {
return getIt.get<AppState>().isArabic() ? weightUnitsAr : weightUnitsEn;
}
void setWeightUnit(String unit) { void setWeightUnit(String unit) {
_selectedWeightUnit = unit; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = weightUnitsAr.indexOf(unit);
if (index >= 0 && index < weightUnitsEn.length) {
_selectedWeightUnit = weightUnitsEn[index];
}
} else {
_selectedWeightUnit = unit;
}
notifyListeners(); notifyListeners();
} }
// Get the localized display value for the selected weight unit
String get selectedWeightUnitDisplay {
final index = weightUnitsEn.indexOf(_selectedWeightUnit);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? weightUnitsAr[index] : weightUnitsEn[index];
}
return _selectedWeightUnit;
}
// ==================== BLOOD PRESSURE FORM FIELDS ==================== // ==================== BLOOD PRESSURE FORM FIELDS ====================
final List<String> measuredArmList = ['Left Arm', 'Right Arm']; final List<String> measuredArmListEn = ['Left Arm', 'Right Arm'];
final List<String> measuredArmListAr = ['الذراع الأيسر', 'الذراع الأيمن'];
String _selectedMeasuredArm = ''; String _selectedMeasuredArm = '';
String get selectedMeasuredArm => _selectedMeasuredArm; String get selectedMeasuredArm => _selectedMeasuredArm;
List<String> getMeasuredArmList() {
return getIt.get<AppState>().isArabic() ? measuredArmListAr : measuredArmListEn;
}
void setMeasuredArm(String arm) { void setMeasuredArm(String arm) {
_selectedMeasuredArm = arm; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = measuredArmListAr.indexOf(arm);
if (index >= 0 && index < measuredArmListEn.length) {
_selectedMeasuredArm = measuredArmListEn[index];
}
} else {
_selectedMeasuredArm = arm;
}
notifyListeners(); notifyListeners();
} }
// Get the localized display value for the selected measured arm
String get selectedMeasuredArmDisplay {
final index = measuredArmListEn.indexOf(_selectedMeasuredArm);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? measuredArmListAr[index] : measuredArmListEn[index];
}
return _selectedMeasuredArm;
}
// Text Controllers // Text Controllers
TextEditingController weightController = TextEditingController(); TextEditingController weightController = TextEditingController();
TextEditingController bloodSugarController = TextEditingController(); TextEditingController bloodSugarController = TextEditingController();
@ -952,33 +1019,35 @@ class HealthTrackersViewModel extends ChangeNotifier {
// Validation method // Validation method
String? _validateBloodSugarEntry(String dateTime) { String? _validateBloodSugarEntry(String dateTime) {
final isArabic = getIt.get<AppState>().isArabic();
// Validate blood sugar value // Validate blood sugar value
if (bloodSugarController.text.trim().isEmpty) { if (bloodSugarController.text.trim().isEmpty) {
return "Please enter blood sugar value"; return isArabic ? "الرجاء إدخال مستوى سكر الدم" : "Please enter blood sugar value";
} }
final bloodSugarValue = double.tryParse(bloodSugarController.text.trim()); final bloodSugarValue = double.tryParse(bloodSugarController.text.trim());
if (bloodSugarValue == null) { if (bloodSugarValue == null) {
return "Please enter a valid number"; return isArabic ? "الرجاء إدخال رقم صحيح" : "Please enter a valid number";
} }
if (bloodSugarValue <= 0) { if (bloodSugarValue <= 0) {
return "Blood sugar value must be greater than 0"; return isArabic ? "يجب أن يكون مستوى سكر الدم أكبر من 0" : "Blood sugar value must be greater than 0";
} }
// Validate reasonable range (typical ranges) // Validate reasonable range (typical ranges)
if (bloodSugarValue > 1000) { if (bloodSugarValue > 1000) {
return "Blood sugar value seems too high. Please check and enter again"; return isArabic ? "مستوى سكر الدم يبدو مرتفع جداً. يرجى التحقق وإدخالها مرة أخرى" : "Blood sugar value seems too high. Please check and enter again";
} }
// Validate date time // Validate date time
if (dateTime.trim().isEmpty) { if (dateTime.trim().isEmpty) {
return "Please select date and time"; return isArabic ? "الرجاء اختيار التاريخ والوقت" : "Please select date and time";
} }
// Validate measure time // Validate measure time
if (_selectedBloodSugarMeasureTime.isEmpty) { if (_selectedBloodSugarMeasureTime.isEmpty) {
return "Please select when the measurement was taken"; return isArabic ? "الرجاء اختيار وقت القياس" : "Please select when the measurement was taken";
} }
return null; // No errors return null; // No errors
@ -991,6 +1060,8 @@ class HealthTrackersViewModel extends ChangeNotifier {
Function()? onSuccess, Function()? onSuccess,
Function(String error)? onFailure, Function(String error)? onFailure,
}) async { }) async {
final isArabic = getIt.get<AppState>().isArabic();
// Validate // Validate
final validationError = _validateBloodSugarEntry(dateTime); final validationError = _validateBloodSugarEntry(dateTime);
if (validationError != null) { if (validationError != null) {
@ -1025,13 +1096,13 @@ class HealthTrackersViewModel extends ChangeNotifier {
notifyListeners(); notifyListeners();
if (onSuccess != null) onSuccess(); if (onSuccess != null) onSuccess();
} else { } else {
_errorMessage = "Failed to save blood sugar entry. Please try again"; _errorMessage = isArabic ? "فشل حفظ قراءة سكر الدم. يرجى المحاولة مرة أخرى" : "Failed to save blood sugar entry. Please try again";
notifyListeners(); notifyListeners();
if (onFailure != null) onFailure(_errorMessage!); if (onFailure != null) onFailure(_errorMessage!);
} }
} catch (e) { } catch (e) {
log('Error in saveBloodSugarEntry: $e'); log('Error in saveBloodSugarEntry: $e');
_errorMessage = "An error occurred. Please try again"; _errorMessage = isArabic ? "حدث خطأ. يرجى المحاولة مرة أخرى" : "An error occurred. Please try again";
isLoading = false; isLoading = false;
notifyListeners(); notifyListeners();
if (onFailure != null) onFailure(_errorMessage!); if (onFailure != null) onFailure(_errorMessage!);
@ -1042,21 +1113,23 @@ class HealthTrackersViewModel extends ChangeNotifier {
// Validate weight entry before saving // Validate weight entry before saving
String? _validateWeightEntry(String dateTime) { String? _validateWeightEntry(String dateTime) {
final isArabic = getIt.get<AppState>().isArabic();
// Validate weight value // Validate weight value
final weightValue = weightController.text.trim(); final weightValue = weightController.text.trim();
if (weightValue.isEmpty) { if (weightValue.isEmpty) {
return "Please enter weight value"; return isArabic ? "الرجاء إدخال قيمة الوزن" : "Please enter weight value";
} }
// Check if it's a valid number // Check if it's a valid number
final parsedValue = double.tryParse(weightValue); final parsedValue = double.tryParse(weightValue);
if (parsedValue == null || parsedValue <= 0) { if (parsedValue == null || parsedValue <= 0) {
return "Please enter a valid weight value"; return isArabic ? "الرجاء إدخال قيمة وزن صحيحة" : "Please enter a valid weight value";
} }
// Validate date time // Validate date time
if (dateTime.trim().isEmpty) { if (dateTime.trim().isEmpty) {
return "Please select date and time"; return isArabic ? "الرجاء تحديد التاريخ والوقت" : "Please select date and time";
} }
return null; // No errors return null; // No errors
@ -1068,6 +1141,8 @@ class HealthTrackersViewModel extends ChangeNotifier {
Function()? onSuccess, Function()? onSuccess,
Function(String error)? onFailure, Function(String error)? onFailure,
}) async { }) async {
final isArabic = getIt.get<AppState>().isArabic();
// Validate // Validate
final validationError = _validateWeightEntry(dateTime); final validationError = _validateWeightEntry(dateTime);
if (validationError != null) { if (validationError != null) {
@ -1100,13 +1175,13 @@ class HealthTrackersViewModel extends ChangeNotifier {
notifyListeners(); notifyListeners();
if (onSuccess != null) onSuccess(); if (onSuccess != null) onSuccess();
} else { } else {
_errorMessage = "Failed to save weight entry. Please try again"; _errorMessage = isArabic ? "فشل حفظ قراءة الوزن. يرجى المحاولة مرة أخرى" : "Failed to save weight entry. Please try again";
notifyListeners(); notifyListeners();
if (onFailure != null) onFailure(_errorMessage!); if (onFailure != null) onFailure(_errorMessage!);
} }
} catch (e) { } catch (e) {
log('Error in saveWeightEntry: $e'); log('Error in saveWeightEntry: $e');
_errorMessage = "An error occurred. Please try again"; _errorMessage = isArabic ? "حدث خطأ. يرجى المحاولة مرة أخرى" : "An error occurred. Please try again";
isLoading = false; isLoading = false;
notifyListeners(); notifyListeners();
if (onFailure != null) onFailure(_errorMessage!); if (onFailure != null) onFailure(_errorMessage!);
@ -1117,34 +1192,36 @@ class HealthTrackersViewModel extends ChangeNotifier {
// Validate blood pressure entry before saving // Validate blood pressure entry before saving
String? _validateBloodPressureEntry(String dateTime) { String? _validateBloodPressureEntry(String dateTime) {
final isArabic = getIt.get<AppState>().isArabic();
// Validate systolic value // Validate systolic value
final systolicValue = systolicController.text.trim(); final systolicValue = systolicController.text.trim();
if (systolicValue.isEmpty) { if (systolicValue.isEmpty) {
return "Please enter systolic value"; return isArabic ? "الرجاء إدخال القيمة الانقباضية" : "Please enter systolic value";
} }
final parsedSystolic = int.tryParse(systolicValue); final parsedSystolic = int.tryParse(systolicValue);
if (parsedSystolic == null || parsedSystolic <= 0) { if (parsedSystolic == null || parsedSystolic <= 0) {
return "Please enter a valid systolic value"; return isArabic ? "الرجاء إدخال قيمة صحيحة للضغط الانقباضي" : "Please enter a valid systolic value";
} }
// Validate diastolic value // Validate diastolic value
final diastolicValue = diastolicController.text.trim(); final diastolicValue = diastolicController.text.trim();
if (diastolicValue.isEmpty) { if (diastolicValue.isEmpty) {
return "Please enter diastolic value"; return isArabic ? "الرجاء إدخال قيمة الضغط الانبساطي" : "Please enter diastolic value";
} }
final parsedDiastolic = int.tryParse(diastolicValue); final parsedDiastolic = int.tryParse(diastolicValue);
if (parsedDiastolic == null || parsedDiastolic <= 0) { if (parsedDiastolic == null || parsedDiastolic <= 0) {
return "Please enter a valid diastolic value"; return isArabic ? "الرجاء إدخال قيمة صحيحة للضغط الانبساطي" : "Please enter a valid diastolic value";
} }
// Validate arm selection // Validate arm selection
if (_selectedMeasuredArm.isEmpty) { if (_selectedMeasuredArm.isEmpty) {
return "Please select measured arm"; return isArabic ? "الرجاء اختيار الذراع المقاسة" : "Please select measured arm";
} }
// Validate date time // Validate date time
if (dateTime.trim().isEmpty) { if (dateTime.trim().isEmpty) {
return "Please select date and time"; return isArabic ? "الرجاء تحديد التاريخ والوقت" : "Please select date and time";
} }
return null; // No errors return null; // No errors
@ -1156,6 +1233,8 @@ class HealthTrackersViewModel extends ChangeNotifier {
Function()? onSuccess, Function()? onSuccess,
Function(String error)? onFailure, Function(String error)? onFailure,
}) async { }) async {
final isArabic = getIt.get<AppState>().isArabic();
// Validate // Validate
final validationError = _validateBloodPressureEntry(dateTime); final validationError = _validateBloodPressureEntry(dateTime);
if (validationError != null) { if (validationError != null) {
@ -1171,7 +1250,7 @@ class HealthTrackersViewModel extends ChangeNotifier {
try { try {
// Get measured arm index (0 = Left Arm, 1 = Right Arm) // Get measured arm index (0 = Left Arm, 1 = Right Arm)
final measuredArmIndex = measuredArmList.indexOf(_selectedMeasuredArm); final measuredArmIndex = measuredArmListEn.indexOf(_selectedMeasuredArm);
// Call API // Call API
final success = await addOrUpdateBloodPressureResult( final success = await addOrUpdateBloodPressureResult(
@ -1192,13 +1271,13 @@ class HealthTrackersViewModel extends ChangeNotifier {
notifyListeners(); notifyListeners();
if (onSuccess != null) onSuccess(); if (onSuccess != null) onSuccess();
} else { } else {
_errorMessage = "Failed to save blood pressure entry. Please try again"; _errorMessage = isArabic ? "فشل حفظ قراءة ضغط الدم. يرجى المحاولة مرة أخرى" : "Failed to save blood pressure entry. Please try again";
notifyListeners(); notifyListeners();
if (onFailure != null) onFailure(_errorMessage!); if (onFailure != null) onFailure(_errorMessage!);
} }
} catch (e) { } catch (e) {
log('Error in saveBloodPressureEntry: $e'); log('Error in saveBloodPressureEntry: $e');
_errorMessage = "An error occurred. Please try again"; _errorMessage = isArabic ? "حدث خطأ. يرجى المحاولة مرة أخرى" : "An error occurred. Please try again";
isLoading = false; isLoading = false;
notifyListeners(); notifyListeners();
if (onFailure != null) onFailure(_errorMessage!); if (onFailure != null) onFailure(_errorMessage!);

@ -40,7 +40,20 @@ class WaterMonitorViewModel extends ChangeNotifier {
// Units // Units
final List<String> heightUnits = ['cm', 'm', 'ft', 'in']; final List<String> heightUnits = ['cm', 'm', 'ft', 'in'];
final List<String> heightUnitsEn = ['cm', 'm', 'ft', 'in'];
final List<String> heightUnitsAr = ['سم', 'م', 'قدم', 'بوصة'];
final List<String> weightUnits = ['kg', 'lb']; final List<String> weightUnits = ['kg', 'lb'];
final List<String> weightUnitsEn = ['kg', 'lb'];
final List<String> weightUnitsAr = ['كجم', 'رطل'];
List<String> getHeightUnitsList() {
return getIt.get<AppState>().isArabic() ? heightUnitsAr : heightUnitsEn;
}
List<String> getWeightUnitsList() {
return getIt.get<AppState>().isArabic() ? weightUnitsAr : weightUnitsEn;
}
// Selected values // Selected values
String _selectedHeightUnit = 'cm'; String _selectedHeightUnit = 'cm';
@ -62,8 +75,26 @@ class WaterMonitorViewModel extends ChangeNotifier {
String get selectedHeightUnit => _selectedHeightUnit; String get selectedHeightUnit => _selectedHeightUnit;
// Get the localized display value for the selected height unit
String get selectedHeightUnitDisplay {
final index = heightUnitsEn.indexOf(_selectedHeightUnit);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? heightUnitsAr[index] : heightUnitsEn[index];
}
return _selectedHeightUnit;
}
String get selectedWeightUnit => _selectedWeightUnit; String get selectedWeightUnit => _selectedWeightUnit;
// Get the localized display value for the selected weight unit
String get selectedWeightUnitDisplay {
final index = weightUnitsEn.indexOf(_selectedWeightUnit);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? weightUnitsAr[index] : weightUnitsEn[index];
}
return _selectedWeightUnit;
}
String get selectedActivityLevel => _selectedActivityLevel; String get selectedActivityLevel => _selectedActivityLevel;
String get selectedNumberOfReminders => _selectedNumberOfReminders; String get selectedNumberOfReminders => _selectedNumberOfReminders;
@ -75,17 +106,75 @@ class WaterMonitorViewModel extends ChangeNotifier {
bool get isGraphView => _isGraphView; bool get isGraphView => _isGraphView;
// Activity level options // Activity level options
List<String> get activityLevels => final List<String> activityLevelsEn = [
["Almost Inactive (no exercise)", "Lightly active", "Lightly active (1-3) days per week", "Super active (very hard exercise)"]; "Almost Inactive (no exercise)",
"Lightly active",
"Lightly active (1-3) days per week",
"Super active (very hard exercise)"
];
final List<String> activityLevelsAr = [
"غير نشط تقريباً (بدون تمرين)",
"نشط قليلاً",
"نشط قليلاً (1-3) أيام في الأسبوع",
"نشط جداً (تمرين شاق جداً)"
];
List<String> get activityLevels => getIt.get<AppState>().isArabic() ? activityLevelsAr : activityLevelsEn;
// Get the localized display value for the selected activity level
String get selectedActivityLevelDisplay {
final index = activityLevelsEn.indexOf(_selectedActivityLevel);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? activityLevelsAr[index] : activityLevelsEn[index];
}
return _selectedActivityLevel;
}
// Reminder options // Reminder options
List<String> get reminderOptions => ["1 Time", "2 Time", "3 Time", "4 Time", "5 Time", "6 Time"]; final List<String> reminderOptionsEn = ["1 Time", "2 Time", "3 Time", "4 Time", "5 Time", "6 Time"];
final List<String> reminderOptionsAr = ["مرة واحدة", "مرتين", "3 مرات", "4 مرات", "5 مرات", "6 مرات"];
List<String> get reminderOptions => getIt.get<AppState>().isArabic() ? reminderOptionsAr : reminderOptionsEn;
// Get the localized display value for the selected number of reminders
String get selectedNumberOfRemindersDisplay {
final index = reminderOptionsEn.indexOf(_selectedNumberOfReminders);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? reminderOptionsAr[index] : reminderOptionsEn[index];
}
return _selectedNumberOfReminders;
}
// Gender options // Gender options
List<String> get genderOptions => ["Male", "Female"]; final List<String> genderOptionsEn = ["Male", "Female"];
final List<String> genderOptionsAr = ["ذكر", "أنثى"];
List<String> get genderOptions => getIt.get<AppState>().isArabic() ? genderOptionsAr : genderOptionsEn;
// Get the localized display value for the selected gender
String get selectedGenderDisplay {
final index = genderOptionsEn.indexOf(_selectedGender);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? genderOptionsAr[index] : genderOptionsEn[index];
}
return _selectedGender;
}
// Duration Options
final List<String> durationFiltersEn = ["Daily", "Weekly", "Monthly"];
final List<String> durationFiltersAr = ["يومي", "أسبوعي", "شهري"];
//Duration Options List<String> get durationFilters => getIt.get<AppState>().isArabic() ? durationFiltersAr : durationFiltersEn;
List<String> get durationFilters => ["Daily", "Weekly", "Monthly"];
// Get the localized display value for the selected duration
String get selectedDurationFilterDisplay {
final index = durationFiltersEn.indexOf(_selectedDuration);
if (index >= 0) {
return getIt.get<AppState>().isArabic() ? durationFiltersAr[index] : durationFiltersEn[index];
}
return _selectedDuration;
}
// Network/data // Network/data
final AppState _appState = GetIt.instance<AppState>(); final AppState _appState = GetIt.instance<AppState>();
@ -503,7 +592,15 @@ class WaterMonitorViewModel extends ChangeNotifier {
// Setters with notification // Setters with notification
void setFilterDuration(String duration) async { void setFilterDuration(String duration) async {
_selectedDuration = duration; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = durationFiltersAr.indexOf(duration);
if (index >= 0 && index < durationFiltersEn.length) {
_selectedDuration = durationFiltersEn[index];
}
} else {
_selectedDuration = duration;
}
notifyListeners(); notifyListeners();
// Fetch new progress data when duration filter changes // Fetch new progress data when duration filter changes
await fetchUserProgressForMonitoring(); await fetchUserProgressForMonitoring();
@ -517,27 +614,67 @@ class WaterMonitorViewModel extends ChangeNotifier {
// Setters with notification // Setters with notification
void setGender(String gender) { void setGender(String gender) {
_selectedGender = gender; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = genderOptionsAr.indexOf(gender);
if (index >= 0 && index < genderOptionsEn.length) {
_selectedGender = genderOptionsEn[index];
}
} else {
_selectedGender = gender;
}
notifyListeners(); notifyListeners();
} }
void setHeightUnit(String unit) { void setHeightUnit(String unit) {
_selectedHeightUnit = unit; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = heightUnitsAr.indexOf(unit);
if (index >= 0 && index < heightUnitsEn.length) {
_selectedHeightUnit = heightUnitsEn[index];
}
} else {
_selectedHeightUnit = unit;
}
notifyListeners(); notifyListeners();
} }
void setWeightUnit(String unit) { void setWeightUnit(String unit) {
_selectedWeightUnit = unit; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = weightUnitsAr.indexOf(unit);
if (index >= 0 && index < weightUnitsEn.length) {
_selectedWeightUnit = weightUnitsEn[index];
}
} else {
_selectedWeightUnit = unit;
}
notifyListeners(); notifyListeners();
} }
void setActivityLevel(String level) { void setActivityLevel(String level) {
_selectedActivityLevel = level; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = activityLevelsAr.indexOf(level);
if (index >= 0 && index < activityLevelsEn.length) {
_selectedActivityLevel = activityLevelsEn[index];
}
} else {
_selectedActivityLevel = level;
}
notifyListeners(); notifyListeners();
} }
void setNumberOfReminders(String number) { void setNumberOfReminders(String number) {
_selectedNumberOfReminders = number; // Map Arabic values to English keys
if (getIt.get<AppState>().isArabic()) {
final index = reminderOptionsAr.indexOf(number);
if (index >= 0 && index < reminderOptionsEn.length) {
_selectedNumberOfReminders = reminderOptionsEn[index];
}
} else {
_selectedNumberOfReminders = number;
}
notifyListeners(); notifyListeners();
} }

@ -1783,5 +1783,9 @@ abstract class LocaleKeys {
static const selectBloodDonationCity = 'selectBloodDonationCity'; static const selectBloodDonationCity = 'selectBloodDonationCity';
static const selectBloodDonationGender = 'selectBloodDonationGender'; static const selectBloodDonationGender = 'selectBloodDonationGender';
static const selectBloodType = 'selectBloodType'; static const selectBloodType = 'selectBloodType';
static const doctors2 = 'doctors2';
static const illurgyInfomation = 'illurgyInfomation';
static const vaccineInfomation = 'vaccineInfomation';
static const approvals1 = 'approvals1';
} }

@ -222,7 +222,7 @@ class _MyDoctorsPageState extends State<MyDoctorsPage> {
richText: Row( richText: Row(
children: [ children: [
"${group.length} ".toText10(isEnglishOnly: true), "${group.length} ".toText10(isEnglishOnly: true),
"${LocaleKeys.doctors.tr(context: context)} ".toText10() "${LocaleKeys.doctors2.tr(context: context)} ".toText10()
], ],
), ),
// labelText: "${group.length} ${'doctors'}", // labelText: "${group.length} ${'doctors'}",

@ -77,8 +77,8 @@ class QuickLoginState extends State<QuickLogin> {
// color: Colors.black, // color: Colors.black,
// ), // ),
// ), // ),
SizedBox(height: 5.h), // SizedBox(height: 5.h),
LocaleKeys.enableQuickLogin.tr(context: context).toText16(color: AppColors.quickLoginColor), // LocaleKeys.enableQuickLogin.tr(context: context).toText16(color: AppColors.quickLoginColor),
// Description // Description
// Text( // Text(
// 'TranslationBase.of(context).enableMsg', // 'TranslationBase.of(context).enableMsg',

@ -63,7 +63,7 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
bookAppointmentsViewModel.getClinics(); bookAppointmentsViewModel.getClinics();
}); });
name = (widget.calculatorType?.name.toLowerCase() =="bmi"? widget.calculatorType?.name.toUpperCase(): widget.calculatorType?.name.toCamelCase)??""; name = (widget.calculatorType?.name.toLowerCase() == "bmi" ? widget.calculatorType?.name.toUpperCase() : widget.calculatorType?.name.toCamelCase) ?? "";
super.initState(); super.initState();
} }
@ -80,28 +80,29 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
appState = getIt.get<AppState>(); appState = getIt.get<AppState>();
if (widget.calculatorType != null) { if (widget.calculatorType != null) {
return CollapsingListView( return CollapsingListView(
title: widget.calculatorType!.title, title: appState.isArabic() ? widget.calculatorType!.displayName.toCamelCase : "Your ${widget.calculatorType!.displayName.toCamelCase}",
bottomChild: Container( bottomChild: Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, customBorder: BorderRadius.only(topLeft: Radius.circular(24.r), topRight: Radius.circular(24.r))), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, customBorder: BorderRadius.only(topLeft: Radius.circular(24.r), topRight: Radius.circular(24.r))),
padding: EdgeInsets.symmetric(vertical: 20.h, horizontal: 20.h), padding: EdgeInsets.symmetric(vertical: 20.h, horizontal: 20.h),
child: CustomButton( child: CustomButton(
text: LocaleKeys.bookAppo.tr(context: context), text: LocaleKeys.bookAppo.tr(context: context),
onPressed: () { onPressed: () {
if (widget.calculatedResult["clinicId"] == null) { if (widget.calculatedResult["clinicId"] == null) {
bookAppointmentsViewModel.setIsDoctorsListLoading(true); bookAppointmentsViewModel.setIsDoctorsListLoading(true);
bookAppointmentsViewModel.isGetDocForHealthCal = true; bookAppointmentsViewModel.isGetDocForHealthCal = true;
bookAppointmentsViewModel.calculationID = widget.calculatedResult["calculationID"]; bookAppointmentsViewModel.calculationID = widget.calculatedResult["calculationID"];
Navigator.push(context, CustomPageRoute(page: SelectDoctorPage())); Navigator.push(context, CustomPageRoute(page: SelectDoctorPage()));
} else { } else {
onClinicSelected(GetClinicsListResponseModel(clinicID: widget.calculatedResult["clinicId"], clinicDescription: "asdfds", clinicDescriptionN: "asdfds")); onClinicSelected(GetClinicsListResponseModel(clinicID: widget.calculatedResult["clinicId"], clinicDescription: "asdfds", clinicDescriptionN: "asdfds"));
} }
}, },
icon: null, icon: null,
fontSize: 16.f, fontSize: 16.f,
backgroundColor: AppColors.primaryRedColor, backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor,
borderRadius: 12.r, borderRadius: 12.r,
fontWeight: FontWeight.w600,), fontWeight: FontWeight.w600,
),
), ),
child: getCalculatorResultWidget(type: widget.calculatorType!, calculatedResult: widget.calculatedResult).paddingSymmetrical(18.w, 24.h), child: getCalculatorResultWidget(type: widget.calculatorType!, calculatedResult: widget.calculatedResult).paddingSymmetrical(18.w, 24.h),
); );
@ -269,6 +270,7 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
} }
Widget resultWidget({required HealthCalculatorsTypeEnum type, dynamic calculatedResult}) { Widget resultWidget({required HealthCalculatorsTypeEnum type, dynamic calculatedResult}) {
AppState appState = getIt<AppState>();
return Column( return Column(
children: [ children: [
if (type == HealthCalculatorsTypeEnum.bmi) ...[ if (type == HealthCalculatorsTypeEnum.bmi) ...[
@ -658,7 +660,7 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
borderRadius: 8.h, borderRadius: 8.h,
textColor: AppColors.textColor), textColor: AppColors.textColor),
SizedBox(height: 16.h), SizedBox(height: 16.h),
"Fertility Window".toText16(color: AppColors.textColor, isBold: true), appState.isArabic() ? "فترة الخصوبة".toText16(color: AppColors.textColor, isBold: true) : "Fertility Window".toText16(color: AppColors.textColor, isBold: true),
SizedBox(height: 8.h), SizedBox(height: 8.h),
Row( Row(
children: [ children: [
@ -678,8 +680,11 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
], ],
), ),
SizedBox(height: 8.h), SizedBox(height: 8.h),
"This is your fertile window. Maintaining a healthy calorie range supports your body during this period, considering your Basal Metabolic Rate and activity. Your Body Mass Index is within the healthy range." appState.isArabic()
.toText12(height: 1.5, color: AppColors.textColorLight, isBold: true) ? "هذه هي فترة خصوبتك. يساعد الحفاظ على نطاق صحي من السعرات الحرارية في دعم جسمك خلال هذه الفترة، مع مراعاة معدل الأيض الأساسي ومستوى نشاطك. مؤشر كتلة جسمك ضمن النطاق الصحي."
.toText12(height: 1.5, color: AppColors.textColorLight, isBold: true)
: "This is your fertile window. Maintaining a healthy calorie range supports your body during this period, considering your Basal Metabolic Rate and activity. Your Body Mass Index is within the healthy range."
.toText12(height: 1.5, color: AppColors.textColorLight, isBold: true)
], ],
), ),
), ),
@ -700,7 +705,7 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
), ),
Row( Row(
children: [ children: [
"Tips to keep in mind".toText16(color: AppColors.textColor, isBold: true), appState.isArabic() ? "نصائح هامة".toText16(color: AppColors.textColor, isBold: true) : "Tips to keep in mind".toText16(color: AppColors.textColor, isBold: true),
], ],
), ),
], ],
@ -708,13 +713,13 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
SizedBox(height: 8.h), SizedBox(height: 8.h),
Column( Column(
children: [ children: [
_buildTipRow("Drink before you feel thirsty."), _buildTipRow(appState.isArabic() ? "اشربي الماء قبل الشعور بالعطش" : "Drink before you feel thirsty."),
SizedBox(height: 4.h), SizedBox(height: 4.h),
_buildTipRow("Keep a refillable bottle next to you."), _buildTipRow(appState.isArabic() ? "احتفظي بزجاجة ماء قابلة لإعادة التعبئة بجانبك" : "Keep a refillable bottle next to you."),
SizedBox(height: 4.h), SizedBox(height: 4.h),
_buildTipRow("Track your daily intake to stay motivated."), _buildTipRow(appState.isArabic() ? "تابعي استهلاكك اليومي للحفاظ على حماسك" : "Track your daily intake to stay motivated."),
SizedBox(height: 4.h), SizedBox(height: 4.h),
_buildTipRow("Choose sparkling water instead of soda."), _buildTipRow(appState.isArabic() ? "اختاري المياه الفوارة بدلاً من المشروبات الغازية" : "Choose sparkling water instead of soda."),
], ],
).paddingOnly(left: 4.w, right: 4.w) ).paddingOnly(left: 4.w, right: 4.w)
], ],
@ -1378,6 +1383,7 @@ class _SelectClinicPageState extends State<SelectClinicPage> {
} }
} }
} }
bookAppointmentsViewModel.addListener(listener); bookAppointmentsViewModel.addListener(listener);
if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_REGION || regionalViewModel.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER) { if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_REGION || regionalViewModel.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER) {

@ -49,18 +49,21 @@ class ErOnlineCheckinHome extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Utils.buildSvgWithAssets(icon: AppAssets.immediate_service_icon, width: 58.h, height: 58.h), Utils.getNoDataWidget(context)
SizedBox(width: 18.h), // Utils.buildSvgWithAssets(icon: AppAssets.immediate_service_icon, width: 58.h, height: 58.h),
Expanded( // SizedBox(width: 18.h),
child: Column( // Expanded(
crossAxisAlignment: CrossAxisAlignment.start, // child: Column(
children: [ // crossAxisAlignment: CrossAxisAlignment.start,
LocaleKeys.onlineCheckIn.tr().toText18(color: AppColors.textColor, isBold: true), // children: [
LocaleKeys.erOnlineCheckInDescription.tr().toText14(color: AppColors.greyTextColor, isBold: true), // LocaleKeys.onlineCheckIn.tr().toText18(color: AppColors.textColor, isBold: true),
], // LocaleKeys.erOnlineCheckInDescription.tr().toText14(color: AppColors.greyTextColor, isBold: true),
), // ],
), // ),
// ),
], ],
), ),
], ],

@ -1,5 +1,7 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_state.dart';
import 'package:hmg_patient_app_new/core/dependencies.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart';
@ -56,6 +58,7 @@ class _OvulationWidgetState extends State<OvulationWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
AppState appState = getIt<AppState>();
return Consumer<HealthCalcualtorViewModel>(builder: (context, provider, _) { return Consumer<HealthCalcualtorViewModel>(builder: (context, provider, _) {
return Container( return Container(
margin: EdgeInsets.zero, margin: EdgeInsets.zero,
@ -165,7 +168,9 @@ class _OvulationWidgetState extends State<OvulationWidget> {
Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w),
SizedBox(width: 12.w), SizedBox(width: 12.w),
Expanded( Expanded(
child: "Calculate ovulation and fertile window based on last period, cycle length and luteal phase.".toText12(isBold: true, color: AppColors.inputLabelTextColor), child: appState.isArabic()
? "احسب فترة الإباضة وفترة الخصوبة بناءً على آخر دورة شهرية وطول الدورة الشهرية ومرحلة الجسم الأصفر.".toText12(isBold: true, color: AppColors.inputLabelTextColor)
: "Calculate ovulation and fertile window based on last period, cycle length and luteal phase.".toText12(isBold: true, color: AppColors.inputLabelTextColor),
), ),
], ],
).paddingSymmetrical(0.w, 16.w), ).paddingSymmetrical(0.w, 16.w),

@ -265,8 +265,8 @@ class _AddHealthTrackerEntryPageState extends State<AddHealthTrackerEntryPage> {
_showSelectionBottomSheet( _showSelectionBottomSheet(
context: context, context: context,
title: LocaleKeys.selectUnit.tr(context: context), title: LocaleKeys.selectUnit.tr(context: context),
items: viewModel.weightUnits, items: viewModel.getWeightUnitsList(),
selectedValue: viewModel.selectedWeightUnit, selectedValue: viewModel.selectedWeightUnitDisplay,
onSelected: viewModel.setWeightUnit, onSelected: viewModel.setWeightUnit,
useUpperCase: false, useUpperCase: false,
); );
@ -278,8 +278,8 @@ class _AddHealthTrackerEntryPageState extends State<AddHealthTrackerEntryPage> {
_showSelectionBottomSheet( _showSelectionBottomSheet(
context: context, context: context,
title: LocaleKeys.selectArm.tr(context: context), title: LocaleKeys.selectArm.tr(context: context),
items: viewModel.measuredArmList, items: viewModel.getMeasuredArmList(),
selectedValue: viewModel.selectedMeasuredArm, selectedValue: viewModel.selectedMeasuredArmDisplay,
onSelected: viewModel.setMeasuredArm, onSelected: viewModel.setMeasuredArm,
useUpperCase: false, useUpperCase: false,
); );
@ -442,7 +442,7 @@ class _AddHealthTrackerEntryPageState extends State<AddHealthTrackerEntryPage> {
icon: AppAssets.bodyIcon, icon: AppAssets.bodyIcon,
iconColor: AppColors.greyTextColor, iconColor: AppColors.greyTextColor,
label: LocaleKeys.selectArm.tr(context: context), label: LocaleKeys.selectArm.tr(context: context),
value: viewModel.selectedMeasuredArm, value: viewModel.selectedMeasuredArmDisplay,
onRowTap: () => _showMeasuredArmSelectionBottomSheet(context, viewModel), onRowTap: () => _showMeasuredArmSelectionBottomSheet(context, viewModel),
), ),
_buildDateTimeFields(), _buildDateTimeFields(),
@ -458,7 +458,7 @@ class _AddHealthTrackerEntryPageState extends State<AddHealthTrackerEntryPage> {
icon: AppAssets.weightScale, icon: AppAssets.weightScale,
label: LocaleKeys.enterWeight.tr(context: context), label: LocaleKeys.enterWeight.tr(context: context),
inputField: _buildTextField(viewModel.weightController, '', keyboardType: TextInputType.number), inputField: _buildTextField(viewModel.weightController, '', keyboardType: TextInputType.number),
unit: viewModel.selectedWeightUnit, unit: viewModel.selectedWeightUnitDisplay,
onUnitTap: () => _showWeightUnitSelectionBottomSheet(context, viewModel), onUnitTap: () => _showWeightUnitSelectionBottomSheet(context, viewModel),
), ),
_buildDateTimeFields(), _buildDateTimeFields(),
@ -487,6 +487,7 @@ class _AddHealthTrackerEntryPageState extends State<AddHealthTrackerEntryPage> {
leadingIcon: AppAssets.calendarGrey, leadingIcon: AppAssets.calendarGrey,
selectionType: SelectionTypeEnum.calendar, selectionType: SelectionTypeEnum.calendar,
isHideSwitcher: true, isHideSwitcher: true,
btnTitle: LocaleKeys.add.tr(context: context),
onCalendarTypeChanged: (val) {}, onCalendarTypeChanged: (val) {},
onChange: (val) { onChange: (val) {
if (val == null) return; if (val == null) return;

@ -92,13 +92,15 @@ class _HealthTrackerDetailPageState extends State<HealthTrackerDetailPage> {
/// Get empty state message based on tracker type /// Get empty state message based on tracker type
String _getEmptyStateMessage() { String _getEmptyStateMessage() {
final isArabic = getIt.get<AppState>().isArabic();
switch (widget.trackerType) { switch (widget.trackerType) {
case HealthTrackerTypeEnum.bloodSugar: case HealthTrackerTypeEnum.bloodSugar:
return "Please add data to track your Blood Sugar"; return isArabic ? "الرجاء إضافة قراءة جديدة لتتبع سكر الدم" : "Please add data to track your Blood Sugar";
case HealthTrackerTypeEnum.bloodPressure: case HealthTrackerTypeEnum.bloodPressure:
return "Please add data to track your Blood Pressure"; return isArabic ? "الرجاء إضافة قراءة جديدة لتتبع ضغط الدم" : "Please add data to track your Blood Pressure";
case HealthTrackerTypeEnum.weightTracker: case HealthTrackerTypeEnum.weightTracker:
return "Please add data to track your Weight"; return isArabic ? "الرجاء إضافة قراءة جديدة لتتبع الوزن" : "Please add data to track your Weight";
} }
} }
@ -188,7 +190,7 @@ class _HealthTrackerDetailPageState extends State<HealthTrackerDetailPage> {
context: context, context: context,
title: LocaleKeys.selectDuration.tr(), title: LocaleKeys.selectDuration.tr(),
items: viewModel.durationFilters, items: viewModel.durationFilters,
selectedValue: viewModel.selectedDurationFilter, selectedValue: viewModel.selectedDurationFilterDisplay,
onSelected: viewModel.setFilterDuration, onSelected: viewModel.setFilterDuration,
); );
} }
@ -304,7 +306,7 @@ class _HealthTrackerDetailPageState extends State<HealthTrackerDetailPage> {
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
viewModel.selectedDurationFilter.toText12(isBold: true), viewModel.selectedDurationFilterDisplay.toText12(isBold: true),
SizedBox(width: 4.w), SizedBox(width: 4.w),
Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 16.h), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 16.h),
], ],
@ -573,6 +575,8 @@ class _HealthTrackerDetailPageState extends State<HealthTrackerDetailPage> {
} }
Widget _buildEmptyStateWidget() { Widget _buildEmptyStateWidget() {
final isArabic = getIt.get<AppState>().isArabic();
return SizedBox( return SizedBox(
height: MediaQuery.of(context).size.height * 0.5, height: MediaQuery.of(context).size.height * 0.5,
child: Center( child: Center(
@ -587,7 +591,7 @@ class _HealthTrackerDetailPageState extends State<HealthTrackerDetailPage> {
width: 48.w, width: 48.w,
), ),
SizedBox(height: 16.h), SizedBox(height: 16.h),
"You do not have any data available.".toText14( (isArabic ? "ليس لديك أي بيانات متاحة." : "You do not have any data available.").toText14(
weight: FontWeight.w600, weight: FontWeight.w600,
color: AppColors.textColor, color: AppColors.textColor,
isCenter: true, isCenter: true,

@ -47,7 +47,7 @@ class _InsuranceHomePageState extends State<InsuranceHomePage> {
appState = getIt.get<AppState>(); appState = getIt.get<AppState>();
insuranceViewModel = Provider.of<InsuranceViewModel>(context, listen: false); insuranceViewModel = Provider.of<InsuranceViewModel>(context, listen: false);
return CollapsingListView( return CollapsingListView(
title: "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.updateInsurance.tr(context: context)}", title: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.insurance.tr(context: context)}",
// history: () { // history: () {
// // insuranceViewModel.setIsInsuranceHistoryLoading(true); // // insuranceViewModel.setIsInsuranceHistoryLoading(true);
// // insuranceViewModel.getPatientInsuranceCardHistory(); // // insuranceViewModel.getPatientInsuranceCardHistory();

@ -747,7 +747,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
Expanded( Expanded(
child: LabRadCard( child: LabRadCard(
icon: AppAssets.radiology_icon, icon: AppAssets.radiology_icon,
labelText: "${LocaleKeys.radiology.tr(context: context)} ${LocaleKeys.results.tr(context: context)}", labelText: LocaleKeys.radiologyLabResults.tr(context: context),
// labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar", // labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar",
// labOrderTests: ["Chest X-ray", "Abdominal Ultrasound", "Dental X-ray"], // labOrderTests: ["Chest X-ray", "Abdominal Ultrasound", "Dental X-ray"],
labOrderTests: [], labOrderTests: [],
@ -1081,7 +1081,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
); );
}), }),
MedicalFileCard( MedicalFileCard(
label: "Allergy Information".needTranslation, label: LocaleKeys.illurgyInfomation.tr(),
textColor: AppColors.blackColor, textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor, backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.allergy_info_icon, svgIcon: AppAssets.allergy_info_icon,
@ -1096,7 +1096,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
); );
}), }),
MedicalFileCard( MedicalFileCard(
label: "Vaccine Information".needTranslation, label: LocaleKeys.vaccineInfomation.tr(),
textColor: AppColors.blackColor, textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor, backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.vaccine_info_icon, svgIcon: AppAssets.vaccine_info_icon,
@ -1191,7 +1191,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
Navigator.of(context).push(CustomPageRoute(page: InsuranceHomePage())); Navigator.of(context).push(CustomPageRoute(page: InsuranceHomePage()));
}), }),
MedicalFileCard( MedicalFileCard(
label: "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.approvals.tr(context: context)}", label: "${LocaleKeys.approvals1.tr(context: context)} ${LocaleKeys.insurance.tr(context: context)}",
textColor: AppColors.blackColor, textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor, backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.insurance_approval_icon, svgIcon: AppAssets.insurance_approval_icon,
@ -1245,7 +1245,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"${LocaleKeys.sick.tr(context: context)} ${LocaleKeys.sickSubtitle.tr(context: context)}".toText16(isBold: true), "${LocaleKeys.sickSubtitle.tr(context: context)} ${LocaleKeys.sick2.tr(context: context)}".toText16(isBold: true),
Row( Row(
children: [ children: [
LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor), LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor),
@ -1567,7 +1567,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
icon: AppAssets.heightVital, icon: AppAssets.heightVital,
label: LocaleKeys.height.tr(context: context), label: LocaleKeys.height.tr(context: context),
value: _formatValue(vitalSign.heightCm), value: _formatValue(vitalSign.heightCm),
unit: 'cm', unit: LocaleKeys.cm.tr(),
status: null, status: null,
onTap: onTap, onTap: onTap,
), ),
@ -1585,7 +1585,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
icon: AppAssets.weightVital, icon: AppAssets.weightVital,
label: LocaleKeys.weight.tr(context: context), label: LocaleKeys.weight.tr(context: context),
value: _formatValue(vitalSign.weightKg), value: _formatValue(vitalSign.weightKg),
unit: 'kg', unit: LocaleKeys.kg.tr(),
status: vitalSign.weightKg != null ? _getWeightStatus(vitalSign.bodyMassIndex) : null, status: vitalSign.weightKg != null ? _getWeightStatus(vitalSign.bodyMassIndex) : null,
onTap: onTap, onTap: onTap,
), ),

@ -53,7 +53,7 @@ class _PatientSickleavesListPageState extends State<PatientSickleavesListPage> {
return Scaffold( return Scaffold(
backgroundColor: AppColors.bgScaffoldColor, backgroundColor: AppColors.bgScaffoldColor,
body: CollapsingListView( body: CollapsingListView(
title: "${LocaleKeys.sick.tr(context: context)} ${LocaleKeys.sickSubtitle.tr(context: context)}", title: "${LocaleKeys.sickSubtitle.tr(context: context)} ${LocaleKeys.sick.tr(context: context)}",
child: SingleChildScrollView( child: SingleChildScrollView(
child: Consumer<MedicalFileViewModel>(builder: (context, model, child) { child: Consumer<MedicalFileViewModel>(builder: (context, model, child) {
return Column( return Column(

@ -50,7 +50,7 @@ class _VaccineListPageState extends State<VaccineListPage> {
return Scaffold( return Scaffold(
backgroundColor: AppColors.bgScaffoldColor, backgroundColor: AppColors.bgScaffoldColor,
body: CollapsingListView( body: CollapsingListView(
title: LocaleKeys.vaccineInfo.tr(context: context), title: LocaleKeys.vaccineInfomation.tr(context: context),
child: SingleChildScrollView( child: SingleChildScrollView(
child: Consumer<MedicalFileViewModel>(builder: (context, medicalFileVM, child) { child: Consumer<MedicalFileViewModel>(builder: (context, medicalFileVM, child) {
return Column( return Column(

@ -199,7 +199,7 @@ class _SuggestionsScreenState extends State<SuggestionsScreen> {
children: [ children: [
Expanded( Expanded(
child: CollapsingListView( child: CollapsingListView(
title: LocaleKeys.suggestions.tr(), title: LocaleKeys.suggestions.tr() ,
leadingCallback: () => context.pop(), leadingCallback: () => context.pop(),
child: viewModel.isSuggestionsLoading child: viewModel.isSuggestionsLoading
? _buildLoadingShimmer() ? _buildLoadingShimmer()

@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_export.dart';
import 'package:hmg_patient_app_new/core/app_state.dart';
import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart';
import 'package:hmg_patient_app_new/core/utils/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/string_extensions.dart';
@ -53,9 +54,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
onChanged: (_) => onTap(), onChanged: (_) => onTap(),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
), ),
(useUpperCase ? value.toUpperCase() : value.toCamelCase) (useUpperCase ? value.toUpperCase() : value.toCamelCase).toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded,
.toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1)
.expanded,
], ],
).onPress(onTap), ).onPress(onTap),
); );
@ -103,7 +102,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
context: context, context: context,
title: LocaleKeys.selectGender.tr(context: context), title: LocaleKeys.selectGender.tr(context: context),
items: viewModel.genderOptions, items: viewModel.genderOptions,
selectedValue: viewModel.selectedGender, selectedValue: viewModel.selectedGenderDisplay,
onSelected: viewModel.setGender, onSelected: viewModel.setGender,
); );
} }
@ -112,8 +111,8 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
_showSelectionBottomSheet( _showSelectionBottomSheet(
context: context, context: context,
title: LocaleKeys.selectUnit.tr(context: context), title: LocaleKeys.selectUnit.tr(context: context),
items: viewModel.heightUnits, items: viewModel.getHeightUnitsList(),
selectedValue: viewModel.selectedHeightUnit, selectedValue: viewModel.selectedHeightUnitDisplay,
onSelected: viewModel.setHeightUnit, onSelected: viewModel.setHeightUnit,
useUpperCase: true, useUpperCase: true,
); );
@ -123,8 +122,8 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
_showSelectionBottomSheet( _showSelectionBottomSheet(
context: context, context: context,
title: LocaleKeys.selectUnit.tr(context: context), title: LocaleKeys.selectUnit.tr(context: context),
items: viewModel.weightUnits, items: viewModel.getWeightUnitsList(),
selectedValue: viewModel.selectedWeightUnit, selectedValue: viewModel.selectedWeightUnitDisplay,
onSelected: viewModel.setWeightUnit, onSelected: viewModel.setWeightUnit,
useUpperCase: true, useUpperCase: true,
); );
@ -135,7 +134,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
context: context, context: context,
title: LocaleKeys.selectActivityLevel.tr(context: context), title: LocaleKeys.selectActivityLevel.tr(context: context),
items: viewModel.activityLevels, items: viewModel.activityLevels,
selectedValue: viewModel.selectedActivityLevel, selectedValue: viewModel.selectedActivityLevelDisplay,
onSelected: viewModel.setActivityLevel, onSelected: viewModel.setActivityLevel,
); );
} }
@ -145,7 +144,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
context: context, context: context,
title: LocaleKeys.selectNumberOfReminders.tr(context: context), title: LocaleKeys.selectNumberOfReminders.tr(context: context),
items: viewModel.reminderOptions, items: viewModel.reminderOptions,
selectedValue: viewModel.selectedNumberOfReminders, selectedValue: viewModel.selectedNumberOfRemindersDisplay,
onSelected: viewModel.setNumberOfReminders, onSelected: viewModel.setNumberOfReminders,
); );
} }
@ -184,6 +183,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
VoidCallback? onRowTap, VoidCallback? onRowTap,
bool showDivider = true, bool showDivider = true,
}) { }) {
AppState appState = getIt<AppState>();
return Column( return Column(
children: [ children: [
Row( Row(
@ -231,7 +231,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
"Unit".toText12(isBold: true, color: AppColors.inputLabelTextColor), appState.isArabic() ? "الوحدة".toText12(isBold: true, color: AppColors.inputLabelTextColor) : "Unit".toText12(isBold: true, color: AppColors.inputLabelTextColor),
unit.toText12(isBold: true, color: AppColors.textColor), unit.toText12(isBold: true, color: AppColors.textColor),
], ],
), ),
@ -307,7 +307,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
_buildSettingsRow( _buildSettingsRow(
icon: AppAssets.genderIcon, icon: AppAssets.genderIcon,
label: LocaleKeys.selectGender.tr(context: context), label: LocaleKeys.selectGender.tr(context: context),
value: viewModel.selectedGender, value: viewModel.selectedGenderDisplay,
onRowTap: () => _showGenderSelectionBottomsheet(context, viewModel), onRowTap: () => _showGenderSelectionBottomsheet(context, viewModel),
), ),
_buildSettingsRow( _buildSettingsRow(
@ -327,7 +327,7 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
'175', '175',
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
), ),
unit: viewModel.selectedHeightUnit, unit: viewModel.selectedHeightUnitDisplay,
onUnitTap: () => _showHeightUnitSelectionBottomSheet(context, viewModel), onUnitTap: () => _showHeightUnitSelectionBottomSheet(context, viewModel),
), ),
_buildSettingsRow( _buildSettingsRow(
@ -338,19 +338,19 @@ class _WaterMonitorSettingsPageState extends State<WaterMonitorSettingsPage> {
'75', '75',
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
), ),
unit: viewModel.selectedWeightUnit, unit: viewModel.selectedWeightUnitDisplay,
onUnitTap: () => _showWeightUnitSelectionBottomsheet(context, viewModel), onUnitTap: () => _showWeightUnitSelectionBottomsheet(context, viewModel),
), ),
_buildSettingsRow( _buildSettingsRow(
icon: AppAssets.dumbellIcon, icon: AppAssets.dumbellIcon,
label: LocaleKeys.activityLevel.tr(context: context), label: LocaleKeys.activityLevel.tr(context: context),
value: viewModel.selectedActivityLevel, value: viewModel.selectedActivityLevelDisplay,
onRowTap: () => _showActivityLevelSelectionBottomsheet(context, viewModel), onRowTap: () => _showActivityLevelSelectionBottomsheet(context, viewModel),
), ),
_buildSettingsRow( _buildSettingsRow(
icon: AppAssets.notificationIconGrey, icon: AppAssets.notificationIconGrey,
label: LocaleKeys.numberOfRemindersInADay.tr(context: context), label: LocaleKeys.numberOfRemindersInADay.tr(context: context),
value: viewModel.selectedNumberOfReminders, value: viewModel.selectedNumberOfRemindersDisplay,
onRowTap: () => _showNumberOfRemindersSelectionBottomsheet(context, viewModel), onRowTap: () => _showNumberOfRemindersSelectionBottomsheet(context, viewModel),
showDivider: false, showDivider: false,
), ),

@ -2,6 +2,8 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_export.dart';
import 'package:hmg_patient_app_new/core/app_state.dart';
import 'package:hmg_patient_app_new/core/dependencies.dart';
import 'package:hmg_patient_app_new/core/utils/utils.dart'; 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/route_extensions.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
@ -17,13 +19,15 @@ import 'package:uuid/uuid.dart';
/// Bottom sheet to switch between existing cups or add new custom cup /// Bottom sheet to switch between existing cups or add new custom cup
void showSwitchCupBottomSheet(BuildContext context) { void showSwitchCupBottomSheet(BuildContext context) {
final isArabic = getIt.get<AppState>().isArabic();
return showCommonBottomSheetWithoutHeight( return showCommonBottomSheetWithoutHeight(
context, context,
titleWidget: Column( titleWidget: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Switch Cups".toText20(isBold: true), (isArabic ? "تبديل الأكواب" : "Switch Cups").toText20(isBold: true),
"Select your preferred cup size".toText16(isBold: true, color: AppColors.greyTextColor), (isArabic ? "اختر حجم الكوب المفضل لديك" : "Select your preferred cup size").toText16(isBold: true, color: AppColors.greyTextColor),
], ],
), ),
child: SwitchCupBottomSheet(), child: SwitchCupBottomSheet(),

@ -28,6 +28,7 @@ class DateRangeSelector extends StatefulWidget {
final CalendarDesignType designType; final CalendarDesignType designType;
final bool showCalendarToggle; final bool showCalendarToggle;
final OnCalendarTypeChanged? onCalendarTypeChanged; final OnCalendarTypeChanged? onCalendarTypeChanged;
final String? btnTitle;
const DateRangeSelector({ const DateRangeSelector({
super.key, super.key,
@ -35,6 +36,7 @@ class DateRangeSelector extends StatefulWidget {
this.designType = CalendarDesignType.defaultUI, this.designType = CalendarDesignType.defaultUI,
this.showCalendarToggle = true, this.showCalendarToggle = true,
this.onCalendarTypeChanged, this.onCalendarTypeChanged,
this.btnTitle,
}); });
@override @override
@ -83,7 +85,7 @@ class _DateRangeSelectorState extends State<DateRangeSelector> {
_calendarController.selectedRange = PickerDateRange(model.fromDate, model.toDate); _calendarController.selectedRange = PickerDateRange(model.fromDate, model.toDate);
return widget.designType == CalendarDesignType.designV2 ? _buildDesignV2() : _buildDefaultUI(); return widget.designType == CalendarDesignType.designV2 ? _buildDesignV2(widget.btnTitle) : _buildDefaultUI();
} }
Widget _buildDefaultUI() { Widget _buildDefaultUI() {
@ -247,7 +249,7 @@ class _DateRangeSelectorState extends State<DateRangeSelector> {
); );
} }
Widget _buildDesignV2() { Widget _buildDesignV2(String? btnTitle) {
return ChangeNotifierProvider( return ChangeNotifierProvider(
create: (_) => DateRangCalenderModel(appState: getIt(), navigationService: getIt(), dialogService: getIt()), create: (_) => DateRangCalenderModel(appState: getIt(), navigationService: getIt(), dialogService: getIt()),
child: Consumer<DateRangCalenderModel>( child: Consumer<DateRangCalenderModel>(
@ -317,7 +319,7 @@ class _DateRangeSelectorState extends State<DateRangeSelector> {
), ),
// Only Select button for V2 (no cancel button) // Only Select button for V2 (no cancel button)
CustomButton( CustomButton(
text: LocaleKeys.select.tr(context: context), text: btnTitle ?? LocaleKeys.select.tr(context: context),
onPressed: () { onPressed: () {
// Don't reset calendar type - keep user's preference // Don't reset calendar type - keep user's preference
Navigator.of(context).pop(); Navigator.of(context).pop();

@ -45,6 +45,7 @@ class TextInputWidget extends StatelessWidget {
final Widget? suffix; final Widget? suffix;
final Color? labelColor; final Color? labelColor;
final Function(String)? onSubmitted; final Function(String)? onSubmitted;
final String? btnTitle;
// new multiline options // new multiline options
final bool isMultiline; final bool isMultiline;
@ -59,45 +60,45 @@ class TextInputWidget extends StatelessWidget {
// final List<Country> countryList; // final List<Country> countryList;
// final Function(Country)? onCountryChange; // final Function(Country)? onCountryChange;
TextInputWidget({ TextInputWidget(
super.key, {super.key,
required this.labelText, required this.labelText,
required this.hintText, required this.hintText,
this.controller, this.controller,
this.onChange, this.onChange,
this.onCalendarTypeChanged, this.onCalendarTypeChanged,
this.prefix, this.prefix,
this.isEnable = true, this.isEnable = true,
this.isBorderAllowed = true, this.isBorderAllowed = true,
this.isAllowRadius = true, this.isAllowRadius = true,
this.isReadOnly = false, this.isReadOnly = false,
this.keyboardType = TextInputType.number, this.keyboardType = TextInputType.number,
this.focusNode, this.focusNode,
this.autoFocus = false, this.autoFocus = false,
this.padding, this.padding,
this.isAllowLeadingIcon = false, this.isAllowLeadingIcon = false,
this.leadingIcon, this.leadingIcon,
this.isCountryDropDown = false, this.isCountryDropDown = false,
this.hasError = false, this.hasError = false,
this.errorMessage, this.errorMessage,
this.onCountryChange, this.onCountryChange,
this.selectionType, this.selectionType,
this.fontSize, this.fontSize,
this.isWalletAmountInput = false, this.isWalletAmountInput = false,
this.suffix, this.suffix,
this.labelColor, this.labelColor,
this.onSubmitted, this.onSubmitted,
this.hintColor, this.hintColor,
// multiline defaults // multiline defaults
this.isMultiline = false, this.isMultiline = false,
this.minLines = 3, this.minLines = 3,
this.maxLines = 6, this.maxLines = 6,
this.isHideSwitcher, this.isHideSwitcher,
this.isArrowTrailing, this.isArrowTrailing,
this.fontFamily, this.fontFamily,
// this.countryList = const [], // this.countryList = const [],
// this.onCountryChange, // this.onCountryChange,
}); this.btnTitle});
final FocusNode _focusNode = FocusNode(); final FocusNode _focusNode = FocusNode();
@ -218,7 +219,6 @@ class TextInputWidget extends StatelessWidget {
} }
Widget _buildTrailingIcon(BuildContext context, {bool isArrowTrailing = false}) { Widget _buildTrailingIcon(BuildContext context, {bool isArrowTrailing = false}) {
final AppState appState = getIt.get<AppState>();
return Container( return Container(
height: 40.h, height: 40.h,
width: 40.w, width: 40.w,
@ -227,20 +227,20 @@ class TextInputWidget extends StatelessWidget {
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 12.r, color: AppColors.whiteColor), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 12.r, color: AppColors.whiteColor),
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
showCommonBottomSheetWithoutHeight( showCommonBottomSheetWithoutHeight(
title: LocaleKeys.selectDate.tr(context: context), title: LocaleKeys.selectDate.tr(context: context),
context, context,
child: DateRangeSelector( child: DateRangeSelector(
onRangeSelected: (DateTime? start, DateTime? end) { onRangeSelected: (DateTime? start, DateTime? end) {
var picked = start.toString().split(" ").first; var picked = start.toString().split(" ").first;
if (picked != null && onChange != null) { if (picked != null && onChange != null) {
onChange!(picked.toString()); onChange!(picked.toString());
} }
}, },
designType: CalendarDesignType.designV2, designType: CalendarDesignType.designV2,
showCalendarToggle: isHideSwitcher == true ? false : true, showCalendarToggle: isHideSwitcher == true ? false : true,
onCalendarTypeChanged: onCalendarTypeChanged, onCalendarTypeChanged: onCalendarTypeChanged,
), btnTitle: btnTitle ?? LocaleKeys.done.tr()),
isFullScreen: false, isFullScreen: false,
isCloseButtonVisible: true, isCloseButtonVisible: true,
callBackFunc: () { callBackFunc: () {

Loading…
Cancel
Save