diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 3567120..eb03dca 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -132,14 +132,14 @@ "insert_otp_code": "ادخل الرمز", "type_code": "الرجاء كتابة الرمز الذي أرسلناه إلى", "resend_code": "أعد إرسال الرمز", - "check_code": "التحقق من الشفرة", + "check_code": "التحقق من الرمز", "time_will_expire": "إعادة إرسال الرمز بتنسيق", "sec": "ثانية", "providers": "الموفرون", - "appointments": "تعيينات", + "appointments": "المواعيد", "home": "بيت", "ads": "إعلانات", - "settings": "إعدادات", + "settings": "الإعدادات", "view_all": "مشاهدة الكل", "my_active_Ads": "إعلاناتي النشطة", "recommended_ads": "الإعلانات الموصى بها", @@ -212,8 +212,8 @@ "noItemSelectedYet": "لم يتم تحديد أي عنصر بعد", "totalAdditionalAmount": "إجمالي المبلغ الإضافي", "sar": "ريال سعودي", - "cancel": "يلغي", - "add": "يضيف", + "cancel": "الغاء", + "add": "اضافه", "itemsAddedSuccessfully": "تمت إضافة العناصر بنجاح", "pleaseSelectItems": "يرجى اختيار العناصر", "totalAmount": "المبلغ الإجمالي", @@ -226,10 +226,10 @@ "typeHere": "اكتب هنا...", "pleaseSelectReason": "يرجى تحديد السبب", "noAppointmentFound": "لم يتم العثور على مواعيد", - "slotsOverview": "نظرة عامة على الفتحات", + "slotsOverview": "نظرة عامة على الحجوزات", "empty": "فارغ", "occupied": "محجوز", - "totalSlots": "إجمالي الفتحات", + "totalSlots": "إجمالي الحجوزات", "selectAppointments": "اختيار المواعيد", "appointmentMergeSuccessfully": "دمج المواعيد تم بنجاح", "updateAppointment": "تحديث الموعد", @@ -238,11 +238,11 @@ "appointmentisCompleted": "تم اكتمال الموعد", "workStart": "بدء العمل", "payNow": "ادفع الآن", - "arrived": "وصل", + "arrived": "تم الوصول", "payLater": "ادفع لاحقًا", "complete": "اكتمل", "makeAnOffer": "قدم عرضًا", - "provideOffer": "تقديم العرض", + "provideOffer": "تقديم عرض", "enterAmount": "أدخل المبلغ", "submit": "إرسال", "viewChat": "عرض الدردشة", @@ -406,7 +406,7 @@ "passwordIsStrong": "كلمة المرور الخاصة بك قوية", "passwordVeryStrong": "كلمة المرور الخاصة بك قوية جدًا", "selectDuration": "اختر المدة", - "daysVar": "الأيام", + "daysVar": "يوم", "adCharges": "رسوم الإعلان", "select": "اختر", "deleteAdConfirmation": "هل تريد حذف الإعلان؟", @@ -655,7 +655,7 @@ "servicesNotAvailableHomeLocation": "بعض الخدمات غير متوفرة في الموقع المنزلي.", "additionalChargesNotice": "هذه الرسوم إضافية على رسوم الخدمة الفعلية. قد تختلف الرسوم للعناصر الثقيلة.", "selectServiceLocation": "اختر موقع الخدمة", - "apptOn": "التعيين في", + "apptOn": "الموعد في", "merged": "مُدمج", "date": "التاريخ", "selectAll": "اختر الكل", @@ -817,13 +817,74 @@ "specialRequestsChats": "دردشات الطلبات الخاصة", "selectDeliveryOption": "اختر خيار التوصيل", "deliveryOptions": "خيارات التوصيل", - "selfPickup": "الالتقاط الذاتي", + "selfPickup": "استلام ذاتي", "updateYourLocationInfo": "قم بتحديث معلومات موقعك", "initiateSelfPickup": "بدء الاستلام الذاتي", - "selfPickupStatus": "حالة الالتقاط الذاتي", + "selfPickupStatus": "حالة الاستلام الذاتي", "myDraftAds": "مسودتي للإعلانات", "scheduleDeletedSuccessfully": "تم حذف الجدول بنجاح", "addValidAddress": "رجى إضافة عنوان صالح", - "termsPrivacyPolicy": "الشروط وسياسة الخصوصية" + "termsPrivacyPolicy": "الشروط وسياسة الخصوصية", + "pendingApproval": "قيد الموافقة", + "inReview": "قيد المراجعة", + "rejected": "مرفوض", + "deactivated": "معطل", + "blocked": "محظور", + "allRequests": "جميع الطلبات", + "pending": "قيد الانتظار", + "preparingToCollect": "جاري التحضير للاستلام", + "readyToCollect": "جاهز للاستلام", + "collected": "تم الاستلام", + "initiated": "تم البدء", + "inTransit": "قيد النقل", + "outForDelivery": "قيد التسليم", + "delivered": "تم التسليم", + "negotiate": "تفاوض", + "accepted": "مقبول", + "cancelled": "ملغى", + "loginToAnotherAccount": "تسجيل الدخول إلى حساب آخر", + "silver": "فضي", + "phoneWithoutCountryCode": "رقم الهاتف بدون رمز الدوله", + "sunday": "الأحد", + "monday": "الإثنين", + "tuesday": "الثلاثاء", + "wednesday": "الأربعاء", + "thursday": "الخميس", + "friday": "الجمعة", + "saturday": "السبت", + "adsWith": "الإعلانات:", + "usersWith": "المستخدمون:", + "branchesWith": "الفروع:", + "subscribed": "مشترك", + "expires": "تنتهي", + "renew": "تجديد", + "km": "كم", + "items": "عناصر", + "no_items": "لا توجد عناصر", + "allAds": "جميع الاعلانات", + "reserveCancel": "الغاء الحجز", + "pendingForReview": "قيد المراجعة", + "pendingForPayment": "قيد الدفع", + "rejected_n": "مرفوض", + "canceled": "ملغى", + "pendingForPost": "قيد النشر", + "active_n": "نشط", + "expired_n": "منتهي الصلاحية", + "sold_n": "مباع", + "reserved_n": "محجوز", + "buyingService": "خدمة الشراء", + "deActive": "غير نشط", + "pendingForActive": "قيد التفعيل", + "updateItem": "تحديث العنصر", + "createItem": "إنشاء عنصر", + "pleaseAddAtLeastOneItemImage": "يرجى إضافة صورة واحدة على الأقل للعنصر", + "pleaseAddValidItemName": "يرجى إضافة اسم عنصر صحيح", + "pleaseAddValidItemDescription": "يرجى إضافة وصف عنصر صحيح", + "pleaseAddValidItemPrice": "يرجى إضافة سعر عنصر صحيح", + "remaining": "متبقي", + "month": "شهر", + "currentPackage": "الحزمة الحالية", + "forVar": "لمدة", + "branch": "الفرع" } \ No newline at end of file diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 0e72d6e..07b3fbd 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -822,5 +822,66 @@ "myDraftAds": "My Draft Ads", "scheduleDeletedSuccessfully": "The schedule has been deleted successfully", "addValidAddress": "Please add a valid address", - "termsPrivacyPolicy": "Terms & Privacy Policy" + "termsPrivacyPolicy": "Terms & Privacy Policy", + "pendingApproval": "Pending Approval", + "inReview": "In Review", + "rejected": "Rejected", + "deactivated": "Deactivated", + "blocked": "Blocked", + "allRequests": "All Requests", + "pending": "Pending", + "preparingToCollect": "Preparing To Collect", + "readyToCollect": "Ready To Collect", + "collected": "Collected", + "initiated": "Initiated", + "inTransit": "In Transit", + "outForDelivery": "Out For De,livery", + "negotiate": "Negotiate", + "accepted": "Accepted", + "cancelled": "Cancelled", + "delivered": "Delivered", + "loginToAnotherAccount": "Login To Another Account", + "silver": "Silver", + "phoneWithoutCountryCode": "Phone without country code", + "sunday": "Sunday", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "adsWith": "Ads:", + "usersWith": "Users:", + "branchesWith": "Branches:", + "subscribed": "Subscribed", + "expires": "Expires", + "renew": "Renew", + "km": "km", + "items": "items", + "no_items": "No items", + "allAds": "All Ads", + "reserveCancel": "Reserve Cancel", + "pendingForReview": "Pending For Review", + "pendingForPayment": "Pending For Payment", + "rejected_n": "Rejected", + "canceled": "Cancelled", + "pendingForPost": "Pending For Post", + "active_n": "Active", + "expired_n": "Expired", + "sold_n": "Sold", + "reserved_n": "Reserved", + "buyingService": "Buying Service", + "deActive": "De Active", + "pendingForActive": "Pending For Active", + "updateItem": "Update Item", + "createItem": "Create Item", + "pleaseAddAtLeastOneItemImage": "Please add at least one item image", + "pleaseAddValidItemName": "Please add valid item name", + "pleaseAddValidItemDescription": "Please add valid item description", + "pleaseAddValidItemPrice": "Please add valid item price", + "remaining": "remaining", + "month": "Month", + "currentPackage": "Current Package", + "forVar": "for", + "branch": "branch" } \ No newline at end of file diff --git a/lib/classes/app_state.dart b/lib/classes/app_state.dart index ce1bf3f..4785d36 100644 --- a/lib/classes/app_state.dart +++ b/lib/classes/app_state.dart @@ -1,3 +1,4 @@ +import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:mc_common_app/models/general_models/post_params_model.dart'; import 'package:mc_common_app/models/subscriptions_models/provider_subscription_model.dart'; @@ -35,6 +36,9 @@ class AppState { _deviceType = value; } + bool isArabic(BuildContext context) => + Localizations.localeOf(context).languageCode == 'ar'; + AppType currentAppType = AppType.provider; UserType userType = UserType.customer; @@ -66,7 +70,8 @@ class AppState { List? _providerSubscription; - List get getproviderSubscription => _providerSubscription ?? [Subscription(name: "")]; + List get getproviderSubscription => + _providerSubscription ?? [Subscription(name: "")]; set setproviderSubscription(List? value) { _providerSubscription = value; @@ -74,7 +79,8 @@ class AppState { DropValue? _userRegisterCountrySelection; - DropValue get getUserRegisterCountrySelection => _userRegisterCountrySelection!; + DropValue get getUserRegisterCountrySelection => + _userRegisterCountrySelection!; set setUserRegisterCountrySelection(DropValue value) { _userRegisterCountrySelection = value; @@ -87,6 +93,4 @@ class AppState { set setIsViewOnly(bool value) { _isViewOnly = value; } - - } diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index ddfee55..2d2048f 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -8,6 +8,8 @@ import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/utils/date_helper.dart'; import 'package:mc_common_app/utils/enums.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:mc_common_app/generated/locale_keys.g.dart'; extension EmailValidator on String { Widget toText( @@ -1075,13 +1077,13 @@ extension RequestDeliveryOptionEnumTosTRINGExt on RequestDeliveryOptionEnum { String getStringFromRequestDeliveryOptionEnum() { switch (this) { case RequestDeliveryOptionEnum.delivery: - return "Delivery"; + return LocaleKeys.delivery.tr(); case RequestDeliveryOptionEnum.selfPickup: - return "Self Pickup"; + return LocaleKeys.selfPickup.tr(); case RequestDeliveryOptionEnum.both: - return "Delivery, Self Pickup"; + return "${LocaleKeys.delivery.tr()}, ${LocaleKeys.selfPickup.tr()}"; default: - return "Self Pickup"; + return LocaleKeys.selfPickup.tr(); } } } diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 48bdef2..420938e 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -148,14 +148,14 @@ class CodegenLoader extends AssetLoader{ "insert_otp_code": "ادخل الرمز", "type_code": "الرجاء كتابة الرمز الذي أرسلناه إلى", "resend_code": "أعد إرسال الرمز", - "check_code": "التحقق من الشفرة", + "check_code": "التحقق من الرمز", "time_will_expire": "إعادة إرسال الرمز بتنسيق", "sec": "ثانية", "providers": "الموفرون", - "appointments": "تعيينات", + "appointments": "المواعيد", "home": "بيت", "ads": "إعلانات", - "settings": "إعدادات", + "settings": "الإعدادات", "view_all": "مشاهدة الكل", "my_active_Ads": "إعلاناتي النشطة", "recommended_ads": "الإعلانات الموصى بها", @@ -228,8 +228,8 @@ class CodegenLoader extends AssetLoader{ "noItemSelectedYet": "لم يتم تحديد أي عنصر بعد", "totalAdditionalAmount": "إجمالي المبلغ الإضافي", "sar": "ريال سعودي", - "cancel": "يلغي", - "add": "يضيف", + "cancel": "الغاء", + "add": "اضافه", "itemsAddedSuccessfully": "تمت إضافة العناصر بنجاح", "pleaseSelectItems": "يرجى اختيار العناصر", "totalAmount": "المبلغ الإجمالي", @@ -242,10 +242,10 @@ class CodegenLoader extends AssetLoader{ "typeHere": "اكتب هنا...", "pleaseSelectReason": "يرجى تحديد السبب", "noAppointmentFound": "لم يتم العثور على مواعيد", - "slotsOverview": "نظرة عامة على الفتحات", + "slotsOverview": "نظرة عامة على الحجوزات", "empty": "فارغ", "occupied": "محجوز", - "totalSlots": "إجمالي الفتحات", + "totalSlots": "إجمالي الحجوزات", "selectAppointments": "اختيار المواعيد", "appointmentMergeSuccessfully": "دمج المواعيد تم بنجاح", "updateAppointment": "تحديث الموعد", @@ -254,11 +254,11 @@ class CodegenLoader extends AssetLoader{ "appointmentisCompleted": "تم اكتمال الموعد", "workStart": "بدء العمل", "payNow": "ادفع الآن", - "arrived": "وصل", + "arrived": "تم الوصول", "payLater": "ادفع لاحقًا", "complete": "اكتمل", "makeAnOffer": "قدم عرضًا", - "provideOffer": "تقديم العرض", + "provideOffer": "تقديم عرض", "enterAmount": "أدخل المبلغ", "submit": "إرسال", "viewChat": "عرض الدردشة", @@ -422,7 +422,7 @@ class CodegenLoader extends AssetLoader{ "passwordIsStrong": "كلمة المرور الخاصة بك قوية", "passwordVeryStrong": "كلمة المرور الخاصة بك قوية جدًا", "selectDuration": "اختر المدة", - "daysVar": "الأيام", + "daysVar": "يوم", "adCharges": "رسوم الإعلان", "select": "اختر", "deleteAdConfirmation": "هل تريد حذف الإعلان؟", @@ -671,7 +671,7 @@ class CodegenLoader extends AssetLoader{ "servicesNotAvailableHomeLocation": "بعض الخدمات غير متوفرة في الموقع المنزلي.", "additionalChargesNotice": "هذه الرسوم إضافية على رسوم الخدمة الفعلية. قد تختلف الرسوم للعناصر الثقيلة.", "selectServiceLocation": "اختر موقع الخدمة", - "apptOn": "التعيين في", + "apptOn": "الموعد في", "merged": "مُدمج", "date": "التاريخ", "selectAll": "اختر الكل", @@ -833,14 +833,75 @@ class CodegenLoader extends AssetLoader{ "specialRequestsChats": "دردشات الطلبات الخاصة", "selectDeliveryOption": "اختر خيار التوصيل", "deliveryOptions": "خيارات التوصيل", - "selfPickup": "الالتقاط الذاتي", + "selfPickup": "الاستلام الذاتي", "updateYourLocationInfo": "قم بتحديث معلومات موقعك", "initiateSelfPickup": "بدء الاستلام الذاتي", - "selfPickupStatus": "حالة الالتقاط الذاتي", + "selfPickupStatus": "حالة الاستلام الذاتي", "myDraftAds": "مسودتي للإعلانات", "scheduleDeletedSuccessfully": "تم حذف الجدول بنجاح", "addValidAddress": "رجى إضافة عنوان صالح", - "termsPrivacyPolicy": "الشروط وسياسة الخصوصية" + "termsPrivacyPolicy": "الشروط وسياسة الخصوصية", + "pendingApproval": "قيد الموافقة", + "inReview": "قيد المراجعة", + "rejected": "مرفوض", + "deactivated": "معطل", + "blocked": "محظور", + "allRequests": "جميع الطلبات", + "pending": "قيد الانتظار", + "preparingToCollect": "جاري التحضير للاستلام", + "readyToCollect": "جاهز للاستلام", + "collected": "تم الاستلام", + "initiated": "تم البدء", + "inTransit": "قيد النقل", + "outForDelivery": "قيد التسليم", + "delivered": "تم التسليم", + "negotiate": "تفاوض", + "accepted": "مقبول", + "cancelled": "ملغى", + "loginToAnotherAccount": "تسجيل الدخول إلى حساب آخر", + "silver": "فضي", + "phoneWithoutCountryCode": "رقم الهاتف بدون رمز الدوله", + "sunday": "الأحد", + "monday": "الإثنين", + "tuesday": "الثلاثاء", + "wednesday": "الأربعاء", + "thursday": "الخميس", + "friday": "الجمعة", + "saturday": "السبت", + "adsWith": "الإعلانات:", + "usersWith": "المستخدمون:", + "branchesWith": "الفروع:", + "subscribed": "مشترك", + "expires": "تنتهي", + "renew": "تجديد", + "km": "كم", + "items": "عناصر", + "no_items": "لا توجد عناصر", + "allAds": "جميع الاعلانات", + "reserveCancel": "الغاء الحجز", + "pendingForReview": "قيد المراجعة", + "pendingForPayment": "قيد الدفع", + "rejected_n": "مرفوض", + "canceled": "ملغى", + "pendingForPost": "قيد النشر", + "active_n": "نشط", + "expired_n": "منتهي الصلاحية", + "sold_n": "مباع", + "reserved_n": "محجوز", + "buyingService": "خدمة الشراء", + "deActive": "غير نشط", + "pendingForActive": "قيد التفعيل", + "updateItem": "تحديث العنصر", + "createItem": "إنشاء عنصر", + "pleaseAddAtLeastOneItemImage": "يرجى إضافة صورة واحدة على الأقل للعنصر", + "pleaseAddValidItemName": "يرجى إضافة اسم عنصر صحيح", + "pleaseAddValidItemDescription": "يرجى إضافة وصف عنصر صحيح", + "pleaseAddValidItemPrice": "يرجى إضافة سعر عنصر صحيح", + "remaining": "متبقي", + "month": "شهر", + "currentPackage": "الحزمة الحالية", + "forVar": "لمدة", + "branch": "الفرع" }; static const Map _en_US = { "firstTimeLogIn": "First Time Log In", @@ -1666,7 +1727,69 @@ static const Map _en_US = { "myDraftAds": "My Draft Ads", "scheduleDeletedSuccessfully": "The schedule has been deleted successfully", "addValidAddress": "Please add a valid address", - "termsPrivacyPolicy": "Terms & Privacy Policy" + "termsPrivacyPolicy": "Terms & Privacy Policy", + "pendingApproval": "Pending Approval", + "inReview": "In Review", + "rejected": "Rejected", + "deactivated": "Deactivated", + "blocked": "Blocked", + "allRequests": "All Requests", + "pending": "Pending", + "preparingToCollect": "Preparing To Collect", + "readyToCollect": "Ready To Collect", + "collected": "Collected", + "initiated": "Initiated", + "inTransit": "In Transit", + "outForDelivery": "Out For De,livery", + "negotiate": "Negotiate", + "accepted": "Accepted", + "cancelled": "Cancelled", + "delivered": "Delivered", + "loginToAnotherAccount": "Login To Another Account", + "silver": "Silver", + "phoneWithoutCountryCode": "Phone without country code", + "sunday": "Sunday", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "adsWith": "Ads:", + "usersWith": "Users:", + "branchesWith": "Branches:", + "subscribed": "Subscribed", + "expires": "Expires", + "renew": "Renew", + "km": "km", + "items": "items", + "no_items": "No items", + "All Ads":"All Ads", + "reserveCancel": " Reserve Cancel", + "pendingForReview": "Pending For Review", + "pendingForPayment": "Pending For Payment", + "rejected_n": "Rejected", + "canceled": "Canceled", + "pendingForPost": "Pending For Post", + "active_n": "Active", + "expired_n": "Expired", + "sold_n": "Sold", + "reserved_n": "Reserved", + "buyingService": "Buying Service", + "deActive": "De Active", + "pendingForActive": "Pending For Active", + "updateItem": "Update Item", + "createItem": "Create Item", + "pleaseAddAtLeastOneItemImage": "Please add at least one item image", + "pleaseAddValidItemName": "Please add valid item name", + "pleaseAddValidItemDescription": "Please add valid item description", + "pleaseAddValidItemPrice": "Please add valid item price", + "remaining": "remaining", + "month": "Month", + "currentPackage": "Current Package", + "forVar": "for", + "branch": "branch", + }; static const Map> mapLocales = {"ar_SA": _ar_SA, "en_US": _en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index ae088cf..3ed6164 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -806,5 +806,80 @@ abstract class LocaleKeys { static const scheduleDeletedSuccessfully = 'scheduleDeletedSuccessfully'; static const addValidAddress = 'addValidAddress'; static const termsPrivacyPolicy = 'termsPrivacyPolicy'; + static const pendingApproval = 'pendingApproval'; + static const inReview = 'inReview'; + static const rejected = 'rejected'; + static const deactivated = 'deactivated'; + static const blocked = 'blocked'; + static const allRequests = 'allRequests'; + static const pending = 'pending'; + static const preparingToCollect = 'preparingToCollect'; + static const readyToCollect = 'readyToCollect'; + static const collected = 'collected'; + static const initiated = 'initiated'; + static const inTransit = 'inTransit'; + static const outForDelivery = 'outForDelivery'; + static const delivered = 'delivered'; + static const negotiate = 'negotiate'; + static const accepted = 'accepted'; + static const cancelled = 'cancelled'; + static const loginToAnotherAccount = 'loginToAnotherAccount'; + static const silver = 'silver'; + static const phoneWithoutCountryCode = 'phoneWithoutCountryCode'; + static const sunday = 'sunday'; + static const monday = 'monday'; + static const tuesday = 'tuesday'; + static const wednesday = 'wednesday'; + static const thursday = 'thursday'; + static const friday = 'friday'; + static const saturday = 'saturday'; + static const adsWith = 'adsWith'; + static const usersWith = 'usersWith'; + static const branchesWith = 'branchesWith'; + static const subscribed = 'subscribed'; + static const renew = 'renew'; + static const km = 'km'; + static const items = 'items'; + static const no_items = 'no_items'; + static const allAds = 'allAds'; + static const reserveCancel = 'reserveCancel'; + static const pendingForReview = 'pendingForReview'; + static const pendingForPayment = 'pendingForPayment'; + static const rejected_n = 'rejected_n'; + static const cancelled_n = 'cancelled_n'; + static const pendingForPost = 'pendingForPost'; + static const active_n = 'active_n'; + static const expired_n = 'expired_n'; + static const sold_n = 'sold_n'; + static const reserved_n = 'reserved_n'; + static const buyingService = 'buyingService'; + static const deActive = 'deActive'; + static const pendingForActive = 'pendingForActive'; + static const updateItem = 'updateItem'; + static const createItem = 'createItem'; + static const pleaseAddAtLeastOneItemImage = 'pleaseAddAtLeastOneItemImage'; + static const pleaseAddValidItemName = 'pleaseAddValidItemName'; + static const pleaseAddValidItemDescription = 'pleaseAddValidItemDescription'; + static const pleaseAddValidItemPrice = 'pleaseAddValidItemPrice'; + static const remaining = 'remaining'; + static const month = 'month'; + static const currentPackage = 'currentPackage'; + static const forVar = 'forVar'; + static const branch = 'branch'; + + + + + + + + + + + + + + + } diff --git a/lib/models/advertisment_models/ad_details_model.dart b/lib/models/advertisment_models/ad_details_model.dart index 03f340d..8cafcf9 100644 --- a/lib/models/advertisment_models/ad_details_model.dart +++ b/lib/models/advertisment_models/ad_details_model.dart @@ -347,6 +347,7 @@ class Mileage { class ModelYear { int? id; String? label; + String? labelN; ModelYear({this.id, this.label}); diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 5e9d335..ca9d93f 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -305,56 +305,55 @@ class Utils { static String getNameByRequestOfferStatusEnum(RequestOfferStatusEnum requestOfferStatusEnum) { switch (requestOfferStatusEnum) { case RequestOfferStatusEnum.offer: - return "Offer"; + return LocaleKeys.offer.tr(); case RequestOfferStatusEnum.negotiate: - return "Negotiate"; + return LocaleKeys.negotiate.tr(); case RequestOfferStatusEnum.accepted: - return "Accepted"; + return LocaleKeys.accepted.tr(); case RequestOfferStatusEnum.rejected: - return "Rejected"; + return LocaleKeys.rejected.tr(); case RequestOfferStatusEnum.cancel: - return "Cancelled"; + return LocaleKeys.cancelled.tr(); } } static String getNameByShippingRequestStatusEnum(ShippingRequestStatusEnum shippingRequestStatusEnum) { switch (shippingRequestStatusEnum) { case ShippingRequestStatusEnum.allRequests: - return "All Requests"; + return LocaleKeys.allRequests.tr(); case ShippingRequestStatusEnum.initiated: - return "Initiated"; + return LocaleKeys.initiated.tr(); case ShippingRequestStatusEnum.inTransit: - return "In Transit"; + return LocaleKeys.inTransit.tr(); case ShippingRequestStatusEnum.outForDelivery: - return "Out For Delivery"; + return LocaleKeys.outForDelivery.tr(); case ShippingRequestStatusEnum.delivered: - return "Delivered"; + return LocaleKeys.delivered.tr(); case ShippingRequestStatusEnum.pending: - return "Pending"; + return LocaleKeys.pending.tr(); } } static String getNameBySelfPickupRequestStatusEnum(SelfPickupRequestStatusEnum selfPickupRequestStatusEnum) { switch (selfPickupRequestStatusEnum) { case SelfPickupRequestStatusEnum.allRequests: - return "All Requests"; + return LocaleKeys.allRequests.tr(); case SelfPickupRequestStatusEnum.pending: - return "Pending"; + return LocaleKeys.pending.tr(); case SelfPickupRequestStatusEnum.preparingToCollect: - return "Preparing To Collect"; + return LocaleKeys.preparingToCollect.tr(); case SelfPickupRequestStatusEnum.readyToCollect: - return "Ready To Collect"; - + return LocaleKeys.readyToCollect.tr(); case SelfPickupRequestStatusEnum.collected: - return "Collected"; + return LocaleKeys.collected.tr(); } } @@ -424,24 +423,44 @@ class Utils { static String getChipStatusTextByBranchStatus(BranchStatusEnum branchStatusEnum) { switch (branchStatusEnum) { case BranchStatusEnum.pending: - return "Pending Approval"; + return LocaleKeys.pendingApproval.tr(); case BranchStatusEnum.review: - return "In Review"; + return LocaleKeys.inReview.tr(); case BranchStatusEnum.rejected: - return "Rejected"; + return LocaleKeys.rejected.tr(); case BranchStatusEnum.deactivated: - return "Deactivated"; + return LocaleKeys.deactivated.tr(); case BranchStatusEnum.blocked: - return "Blocked"; + return LocaleKeys.blocked.tr(); case BranchStatusEnum.approvedOrActive: - return "Active"; + return LocaleKeys.active.tr(); } - } + // static String getChipStatusTextByBranchStatus(BranchStatusEnum branchStatusEnum) { + // switch (branchStatusEnum) { + // case BranchStatusEnum.pending: + // return "Pending Approval"; + // + // case BranchStatusEnum.review: + // return "In Review"; + // + // case BranchStatusEnum.rejected: + // return "Rejected"; + // + // case BranchStatusEnum.deactivated: + // return "Deactivated"; + // + // case BranchStatusEnum.blocked: + // return "Blocked"; + // + // case BranchStatusEnum.approvedOrActive: + // return "Active"; + // } + } static statusContainerChip({ required String text, diff --git a/lib/view_models/ad_view_model.dart b/lib/view_models/ad_view_model.dart index 2467ca7..3454a2d 100644 --- a/lib/view_models/ad_view_model.dart +++ b/lib/view_models/ad_view_model.dart @@ -2379,7 +2379,7 @@ class AdVM extends BaseVM { autoFillSelectedVehicleType(); autoFillSelectedVehicleAdsDuration(); if (isForDraft) { - autoFillSelectedVehicleAdsDetails(); + autoFillSelectedVehicleAdsDetails(context); } navigateWithName(context, AppRoutes.selectAdTypeView, arguments: [AppState().currentAppType == AppType.provider, isFromExtendAd, previousDetails.id]); } @@ -2456,7 +2456,7 @@ class AdVM extends BaseVM { notifyListeners(); } - void autoFillSelectedVehicleAdsDetails() async { + void autoFillSelectedVehicleAdsDetails(BuildContext context) async { if (vehicleBrands.isEmpty) { await getVehicleBrandsByVehicleTypeId(); } @@ -2465,18 +2465,18 @@ class AdVM extends BaseVM { if (index != -1) { await updateSelectionVehicleBrandId(SelectionModel(selectedId: vehicleBrands[index].id!, selectedOption: vehicleBrands[index].vehicleBrandDescription ?? "")); } - + bool isArabic = AppState().isArabic(context); updateSelectionVehicleModelId(SelectionModel(selectedId: previousAdDetails!.vehicle!.model!.id!, selectedOption: previousAdDetails!.vehicle!.model!.label ?? "")); updateSelectionVehicleModelYearId(SelectionModel(selectedId: previousAdDetails!.vehicle!.modelyear!.id!, selectedOption: previousAdDetails!.vehicle!.modelyear!.label ?? "")); - updateSelectionVehicleColorId(SelectionModel(selectedId: previousAdDetails!.vehicle!.color!.id!, selectedOption: previousAdDetails!.vehicle!.color!.label ?? "")); - updateSelectionVehicleConditionId(SelectionModel(selectedId: previousAdDetails!.vehicle!.condition!.id!, selectedOption: previousAdDetails!.vehicle!.condition!.label ?? "")); - updateSelectionVehicleCategoryId(SelectionModel(selectedId: previousAdDetails!.vehicle!.category!.id!, selectedOption: previousAdDetails!.vehicle!.category!.label ?? "")); + updateSelectionVehicleColorId(SelectionModel(selectedId: previousAdDetails!.vehicle!.color!.id!, selectedOption: isArabic ? previousAdDetails!.vehicle!.color!.labelN.toString() : previousAdDetails!.vehicle!.color!.label ?? "")); + updateSelectionVehicleConditionId(SelectionModel(selectedId: previousAdDetails!.vehicle!.condition!.id!, selectedOption: isArabic ? previousAdDetails!.vehicle!.condition!.labelN.toString() :previousAdDetails!.vehicle!.condition!.label ?? "")); + updateSelectionVehicleCategoryId(SelectionModel(selectedId: previousAdDetails!.vehicle!.category!.id!, selectedOption: isArabic ? previousAdDetails!.vehicle!.category!.labelN.toString() :previousAdDetails!.vehicle!.category!.label ?? "")); updateSelectionVehicleMileageId(SelectionModel( selectedId: previousAdDetails!.vehicle!.mileage!.id!, selectedOption: "${previousAdDetails!.vehicle!.mileage!.mileageStart} - ${previousAdDetails!.vehicle!.mileage!.mileageEnd}", )); - updateSelectionVehicleTransmissionId(SelectionModel(selectedId: previousAdDetails!.vehicle!.transmission!.id!, selectedOption: previousAdDetails!.vehicle!.transmission!.label ?? "")); - updateSelectionVehicleSellerTypeId(SelectionModel(selectedId: previousAdDetails!.vehicle!.sellertype!.id!, selectedOption: previousAdDetails!.vehicle!.sellertype!.label ?? "")); + updateSelectionVehicleTransmissionId(SelectionModel(selectedId: previousAdDetails!.vehicle!.transmission!.id!, selectedOption:isArabic ? previousAdDetails!.vehicle!.transmission!.labelN.toString() : previousAdDetails!.vehicle!.transmission!.label ?? "")); + updateSelectionVehicleSellerTypeId(SelectionModel(selectedId: previousAdDetails!.vehicle!.sellertype!.id!, selectedOption: isArabic ? previousAdDetails!.vehicle!.sellertype!.labelN.toString() :previousAdDetails!.vehicle!.sellertype!.label ?? "")); int indexCountry = vehicleCountries.indexWhere((element) => element.id == previousAdDetails!.vehicle!.countryID); if (indexCountry != -1) { updateSelectionVehicleCountryId(SelectionModel(selectedId: vehicleCountries[indexCountry].id!, selectedOption: vehicleCountries[indexCountry].countryName ?? "")); diff --git a/lib/view_models/user_view_model.dart b/lib/view_models/user_view_model.dart index 513208e..4a091a8 100644 --- a/lib/view_models/user_view_model.dart +++ b/lib/view_models/user_view_model.dart @@ -4,6 +4,7 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/cupertino.dart'; +import 'package:http/http.dart'; import 'package:http/src/response.dart'; import 'package:local_auth/local_auth.dart'; import 'package:mc_common_app/classes/app_state.dart'; @@ -748,6 +749,7 @@ class UserVM extends BaseVM { } else { context.setLocale(const Locale('ar', 'SA')); } + log ("updated status: ${AppState().isArabic(context)}"); // notifyListeners(); } diff --git a/lib/views/advertisement/ads_detail_view/ads_detail_view.dart b/lib/views/advertisement/ads_detail_view/ads_detail_view.dart index a6da85c..8efc736 100644 --- a/lib/views/advertisement/ads_detail_view/ads_detail_view.dart +++ b/lib/views/advertisement/ads_detail_view/ads_detail_view.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:mc_common_app/classes/app_state.dart'; import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; @@ -85,6 +86,7 @@ class _AdsDetailViewState extends State { } Widget buildVehicleDetailsWidget() { + bool isArabic = AppState().isArabic(context); return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -94,7 +96,8 @@ class _AdsDetailViewState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Flexible( - child: "${widget.adDetails.vehicle!.vehicleTitle} | ${widget.adDetails.vehicle!.color!.label}| ${widget.adDetails.id}".toText(fontSize: 16, maxLines: 2), + child: "${widget.adDetails.vehicle!.vehicleTitle} | ${isArabic ? widget.adDetails.vehicle!.color!.labelN : widget.adDetails.vehicle!.color!.label}|" + " ${widget.adDetails.id}".toText(fontSize: 16, maxLines: 2), ), (widget.adDetails.vehicle!.cityName ?? "").toText(fontSize: 10, color: MyColors.lightTextColor), ], @@ -105,7 +108,7 @@ class _AdsDetailViewState extends State { Row( children: [ ("${LocaleKeys.vehicleModel.tr()}: ").toText(fontSize: 12, color: MyColors.lightTextColor), - "${widget.adDetails.vehicle!.model!.label}".toText(fontSize: 12), + "${isArabic? widget.adDetails.vehicle!.model!.labelN :widget.adDetails.vehicle!.model!.label}".toText(fontSize: 12), ], ), (widget.adDetails.vehicle!.countryName ?? '').toText(fontSize: 10, color: MyColors.lightTextColor), @@ -124,7 +127,7 @@ class _AdsDetailViewState extends State { Row( children: [ ("${LocaleKeys.mileage.tr()}: ").toText(fontSize: 12, color: MyColors.lightTextColor), - "${widget.adDetails.vehicle!.mileage!.mileageEnd} Km".toText(fontSize: 12), + "${widget.adDetails.vehicle!.mileage!.mileageEnd} ${LocaleKeys.km.tr()}".toText(fontSize: 12), ], ), widget.adDetails.createdOn != null ? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo().toText(fontSize: 10, color: MyColors.lightTextColor) : const SizedBox(), @@ -133,13 +136,13 @@ class _AdsDetailViewState extends State { Row( children: [ ("${LocaleKeys.transmission.tr()}: ").toText(fontSize: 12, color: MyColors.lightTextColor), - "${widget.adDetails.vehicle!.transmission!.label}".toText(fontSize: 12), + "${isArabic? widget.adDetails.vehicle!.transmission!.labelN :widget.adDetails.vehicle!.transmission!.label}".toText(fontSize: 12), ], ), Row( children: [ ("${LocaleKeys.odometer.tr()}: ").toText(fontSize: 12, color: MyColors.lightTextColor), - "${widget.adDetails.vehicle!.odometer ?? 0} Km".toText(fontSize: 12), + "${widget.adDetails.vehicle!.odometer ?? 0} ${LocaleKeys.km.tr()}".toText(fontSize: 12), ], ), Row( diff --git a/lib/views/advertisement/components/ads_list_widget.dart b/lib/views/advertisement/components/ads_list_widget.dart index e1be33c..3317ded 100644 --- a/lib/views/advertisement/components/ads_list_widget.dart +++ b/lib/views/advertisement/components/ads_list_widget.dart @@ -17,6 +17,8 @@ import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:provider/provider.dart'; +import '../../../classes/app_state.dart'; + class AdsListWidget extends StatelessWidget { final List adsList; final ScrollPhysics? scrollPhysics; @@ -117,6 +119,7 @@ class AdCard extends StatelessWidget { @override Widget build(BuildContext context) { + bool isArabic = AppState().isArabic(context); return Stack( alignment: Alignment.center, children: [ diff --git a/lib/views/advertisement/select_ad_type_view.dart b/lib/views/advertisement/select_ad_type_view.dart index 1597368..f51ef1e 100644 --- a/lib/views/advertisement/select_ad_type_view.dart +++ b/lib/views/advertisement/select_ad_type_view.dart @@ -79,7 +79,7 @@ class SelectAdTypeView extends StatelessWidget { adVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: vehicleTypeModel.vehicleTypeName ?? "", errorValue: "")); if (adVM.isAdEditEnabled) { adVM. - autoFillSelectedVehicleAdsDetails(); + autoFillSelectedVehicleAdsDetails(context); } if (AppState().currentAppType == AppType.provider) { if (isFromExtendAd && !adVM.isAdEditEnabled) { diff --git a/lib/views/appointments/widgets/appointment_service_pick_bottom_sheet.dart b/lib/views/appointments/widgets/appointment_service_pick_bottom_sheet.dart index a3d3c1f..61257df 100644 --- a/lib/views/appointments/widgets/appointment_service_pick_bottom_sheet.dart +++ b/lib/views/appointments/widgets/appointment_service_pick_bottom_sheet.dart @@ -22,6 +22,8 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:provider/provider.dart'; +import '../../../classes/app_state.dart'; + class AppointmentServicePickBottomSheet extends StatelessWidget { const AppointmentServicePickBottomSheet({super.key}); @@ -70,12 +72,16 @@ class AppointmentServicePickBottomSheet extends StatelessWidget { 8.height, Builder( builder: (context) { + bool isArabic = AppState().isArabic(context); List serviceCategories = []; for (var element in appointmentsVM.branchServices) { if (element.categoryId == appointmentsVM.branchSelectedCategoryId.selectedId) { serviceCategories.add(DropValue( element.serviceProviderServiceId ?? 0, - element.serviceDescription!, + isArabic + ? element.serviceDescriptionN! + : element.serviceDescription!, + // element.serviceDescription!, "", )); } diff --git a/lib/views/appointments/widgets/common_appointment_slider_widget.dart b/lib/views/appointments/widgets/common_appointment_slider_widget.dart index fc08420..78a7631 100644 --- a/lib/views/appointments/widgets/common_appointment_slider_widget.dart +++ b/lib/views/appointments/widgets/common_appointment_slider_widget.dart @@ -173,7 +173,7 @@ class AppointmentHomeTileWidget extends StatelessWidget { children: [ !isForProvider ? MyAssets.miniClock.buildSvg(height: 12) : const SizedBox(), 2.width, - "${isForProvider ? "Appt. on:" : ""} ${appointmentListModel!.duration ?? ""} ${appointmentListModel!.appointmentDate!.toFormattedDateWithoutTime()}" + "${isForProvider ? LocaleKeys.apptOn.tr() : ""} ${appointmentListModel!.duration ?? ""} ${appointmentListModel!.appointmentDate!.toFormattedDateWithoutTime()}" .toText(color: MyColors.lightTextColor, fontSize: 12, letterSpacing: -0.48, height: 19 / 12), ], ), @@ -291,7 +291,7 @@ class AppointmentFragmentTileWidget extends StatelessWidget { (appointmentListModel!.providerName ?? "").toText(color: MyColors.darkTextColor, fontSize: 16, letterSpacing: -0.64, height: 24 / 16), Row( children: [ - ('Branch:').toText(color: MyColors.greyColor, fontSize: 12, letterSpacing: -0.48, height: 18 / 12), + ("${LocaleKeys.branch.tr()}:").toText(color: MyColors.greyColor, fontSize: 12, letterSpacing: -0.48, height: 18 / 12), 2.width, (appointmentListModel!.branchName ?? "").toText(color: MyColors.darkTextColor, fontSize: 12, letterSpacing: -0.48, height: 18 / 12), ], diff --git a/lib/views/requests/create_request_page.dart b/lib/views/requests/create_request_page.dart index d298776..14cde30 100644 --- a/lib/views/requests/create_request_page.dart +++ b/lib/views/requests/create_request_page.dart @@ -88,9 +88,13 @@ class CreateRequestPage extends StatelessWidget { ), ] else ...[ Builder(builder: (context) { + bool isArabic = AppState().isArabic(context); List vehicleTypeDrop = []; for (var element in requestsVM.vehicleTypes) { - vehicleTypeDrop.add(DropValue(element.id?.toInt() ?? 0, element.vehicleTypeName ?? "", "")); + vehicleTypeDrop.add(DropValue(element.id?.toInt() ?? 0, + isArabic + ? element.vehicleTypeNameN ?? "" + : element.vehicleTypeName ?? "", "")); } return DropdownField( (DropValue value) => requestsVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: value.id, selectedOption: value.value)), @@ -155,9 +159,13 @@ class CreateRequestPage extends StatelessWidget { ), 8.height, Builder(builder: (context) { + bool isArabic = AppState().isArabic(context); List vehicleCountriesDrop = []; for (var element in requestsVM.vehicleCountries) { - vehicleCountriesDrop.add(DropValue(element.id?.toInt() ?? 0, element.countryName ?? "", "")); + vehicleCountriesDrop.add(DropValue(element.id?.toInt() ?? 0, + isArabic + ? element.countryNameN ?? "" + : element.countryName ?? "", "")); } return DropdownField( (DropValue value) => requestsVM.updateSelectionVehicleCountryId(SelectionModel(selectedOption: value.value, selectedId: value.id)), @@ -177,9 +185,12 @@ class CreateRequestPage extends StatelessWidget { ] else ...[ 8.height, Builder(builder: (context) { + bool isArabic = AppState().isArabic(context); List vehicleCitiesDrop = []; for (var element in requestsVM.vehicleCities) { - vehicleCitiesDrop.add(DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", "")); + vehicleCitiesDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic + ? element.cityNameN ?? "" + : element.cityName ?? "", "")); } return DropdownField( (DropValue value) => requestsVM.updateSelectionVehicleCityId(SelectionModel(selectedId: value.id, selectedOption: value.value)), diff --git a/lib/views/setting_options/setting_options_faqs.dart b/lib/views/setting_options/setting_options_faqs.dart index 34bf366..e18ca1e 100644 --- a/lib/views/setting_options/setting_options_faqs.dart +++ b/lib/views/setting_options/setting_options_faqs.dart @@ -31,6 +31,7 @@ class _SettingOptionsFAQsState extends State { await settingsOptionsVM.getAllFaqs(); }); super.initState(); + } @override diff --git a/lib/views/setting_options/setting_options_more.dart b/lib/views/setting_options/setting_options_more.dart index 37ff91f..d741835 100644 --- a/lib/views/setting_options/setting_options_more.dart +++ b/lib/views/setting_options/setting_options_more.dart @@ -128,11 +128,25 @@ class _SettingOptionsMoreState extends State { CustomSettingOptionsTile( leadingWidget: const Icon(Icons.settings, size: 20), titleText: LocaleKeys.settings.tr(), - needBorderBelow: false, + needBorderBelow: true, onTap: () { // context.read().getAppInvitationHistoryList(); navigateWithName(context, AppRoutes.settingOptionsInviteFriends); }), + + /////////////////////////////////me add to test + CustomSettingOptionsTile( + leadingWidget: const Icon(Icons.translate, size: 20), + titleText: LocaleKeys.language.tr(), + isForLanguage: true, + onTap: () { + context.read().changeLanguage(context); + Future.delayed(const Duration(seconds: 1), () { + setState(() {}); + }); + }, + ), + ////////////////////////////////////////////////////////// ], ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), 10.height, diff --git a/lib/views/user/edit_account_page.dart b/lib/views/user/edit_account_page.dart index bf9e6c9..fbe9a8e 100644 --- a/lib/views/user/edit_account_page.dart +++ b/lib/views/user/edit_account_page.dart @@ -77,7 +77,7 @@ class _EditAccountPageState extends State { children: [ CustomSettingOptionsTile( leadingWidget: const Icon(Icons.quickreply_outlined, size: 20), - titleText: "Requests", + titleText: LocaleKeys.requests.tr(), needBorderBelow: true, onTap: () { context.read().onNavbarTapped(4); @@ -85,19 +85,19 @@ class _EditAccountPageState extends State { }), CustomSettingOptionsTile( leadingWidget: const Icon(Icons.settings, size: 20), - titleText: "Settings", + titleText: LocaleKeys.settings.tr(), needBorderBelow: true, onTap: () => navigateWithName(context, AppRoutes.settingOptionsInviteFriends), ), CustomSettingOptionsTile( leadingWidget: const Icon(Icons.question_mark_outlined, size: 20), - titleText: "Help", + titleText: LocaleKeys.help.tr(), needBorderBelow: true, onTap: () => navigateWithName(context, AppRoutes.settingOptionsInviteFriends), ), CustomSettingOptionsTile( leadingWidget: const Icon(Icons.person, size: 20), - titleText: "Account", + titleText: LocaleKeys.account.tr(), needBorderBelow: false, onTap: () { context.read().onNavbarTapped(4); @@ -108,7 +108,7 @@ class _EditAccountPageState extends State { 10.height, CustomSettingOptionsTile( leadingWidget: const Icon(Icons.translate, size: 20), - titleText: "Language", + titleText: LocaleKeys.language.tr(), isForLanguage: true, onTap: () {}, ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), @@ -124,8 +124,8 @@ class _EditAccountPageState extends State { color: MyColors.primaryColor, ), ), - titleText: "My Subscriptions", - subTitle: "Silver", + titleText: LocaleKeys.mySubscription.tr(), + subTitle: LocaleKeys.silver.tr(), isForLanguage: false, needBorderBelow: true, onTap: () { @@ -141,7 +141,7 @@ class _EditAccountPageState extends State { // color: MyColors.primaryColor, ), ), - titleText: "Subscriptions", + titleText: LocaleKeys.subscriptions.tr(), subTitle: null, isForLanguage: false, needBorderBelow: false, @@ -152,7 +152,7 @@ class _EditAccountPageState extends State { ], ).toWhiteContainer(width: double.infinity, pading: const EdgeInsets.all(12), borderRadius: 0), 10.height, - (AppState().currentAppType == AppType.provider) ? const Text("Provider") : const Text("Customer"), + (AppState().currentAppType == AppType.provider) ? const Text(LocaleKeys.provider) : const Text(LocaleKeys.customer), ], ), ), diff --git a/lib/views/user/login_method_selection_page.dart b/lib/views/user/login_method_selection_page.dart index fdc5df3..17d8552 100644 --- a/lib/views/user/login_method_selection_page.dart +++ b/lib/views/user/login_method_selection_page.dart @@ -107,7 +107,7 @@ class _LoginMethodSelectionPageState extends State { ], ), 150.height, - ("Login To Another Account") + LocaleKeys.loginToAnotherAccount.tr() .toText( fontSize: 20, letterSpacing: -1.44, diff --git a/lib/views/user/update_user_city_country.dart b/lib/views/user/update_user_city_country.dart index f38f7bb..9c43077 100644 --- a/lib/views/user/update_user_city_country.dart +++ b/lib/views/user/update_user_city_country.dart @@ -54,14 +54,15 @@ class _UpdateUserCityCountryState extends State { padding: const EdgeInsets.only(right: 20, left: 20, top: 12), child: Builder(builder: (context) { List userCountryDrop = []; + final isArabic = AppState().isArabic(context); for (var element in uVM.userCountries!.data!) { var countryid = country == null ? AppState().getUser.data!.userInfo!.countryId : country!.id; print("Country ID" + countryid.toString()); if (countryid == element.id) { print("Country Matched"); - country = DropValue(element.id?.toInt() ?? 0, element.countryName ?? "", ""); + country = DropValue(element.id?.toInt() ?? 0, isArabic ? element.countryNameN ?? "": element.countryName ?? "", ""); } - userCountryDrop.add(DropValue(element.id?.toInt() ?? 0, element.countryName ?? "", "")); + userCountryDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? element.countryNameN ?? "": element.countryName ?? "", "")); } return DropdownField( (DropValue value) async { @@ -82,13 +83,14 @@ class _UpdateUserCityCountryState extends State { padding: const EdgeInsets.only(right: 20, left: 20, top: 12), child: Builder(builder: (context) { List userCityDrop = []; + final isArabic = AppState().isArabic(context); for (var element in uVM.userCities!.data!) { var cid = city == null ? AppState().getUser.data!.userInfo!.cityId : city!.id; print("City ID" + cid.toString()); if (cid == element.id) { - city = DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", ""); + city = DropValue(element.id?.toInt() ?? 0, isArabic ? element.cityNameN ?? "": element.cityName ?? "", ""); } - userCityDrop.add(DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", "")); + userCityDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? element.cityNameN ?? "": element.cityName ?? "", "")); } return DropdownField( (DropValue value) { diff --git a/lib/widgets/common_widgets/add_phone_num_wiget.dart b/lib/widgets/common_widgets/add_phone_num_wiget.dart index 04c11ed..8736f25 100644 --- a/lib/widgets/common_widgets/add_phone_num_wiget.dart +++ b/lib/widgets/common_widgets/add_phone_num_wiget.dart @@ -57,7 +57,7 @@ class _AddPhoneNumWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - "Enter Phone Number".toText(fontSize: 16, isBold: true), + LocaleKeys.enterPhoneNumber.tr().toText(fontSize: 16, isBold: true), 8.height, Container( decoration: Utils.containerColorRadiusBorderWidth(MyColors.white, 0, MyColors.darkPrimaryColor, 2), @@ -81,7 +81,7 @@ class _AddPhoneNumWidgetState extends State { 8.height, TxtField( keyboardType: TextInputType.phone, - hint: "Phone without country code ", + hint: LocaleKeys.phoneWithoutCountryCode.tr(), value: phoneNum, isSidePaddingZero: true, onChanged: (v) { @@ -116,7 +116,7 @@ class _AddPhoneNumWidgetState extends State { children: [ Expanded( child: ShowFillButton( - title: "Cancel", + title: LocaleKeys.cancel.tr(), backgroundColor: MyColors.greyButtonColor, txtColor: Colors.black, onPressed: () { diff --git a/lib/widgets/common_widgets/branch_details_card.dart b/lib/widgets/common_widgets/branch_details_card.dart index 87013e0..294c5df 100644 --- a/lib/widgets/common_widgets/branch_details_card.dart +++ b/lib/widgets/common_widgets/branch_details_card.dart @@ -95,24 +95,47 @@ class BranchDetailCard extends StatelessWidget { ], ), 8.height, + // if (services != null) + // Column( + // children: services! + // .take(2) + // .map( + // (e) => Row( + // children: [ + // //TODO: Needs to add icon in the future when added from the provider + // // MyAssets.maintenanceIcon.buildSvg(), + // // 8.width, + // e.serviceDescription.toString().toText(fontSize: 12) + // ], + // ), + // ) + // .toList(), + // ), if (services != null) Column( children: services! .take(2) .map( - (e) => Row( - children: [ - //TODO: Needs to add icon in the future when added from the provider - // MyAssets.maintenanceIcon.buildSvg(), - // 8.width, - e.serviceDescription.toString().toText(fontSize: 12) - ], - ), - ) + (e) { + bool isArabic = AppState().isArabic(context); + String serviceText = isArabic + ? e.serviceDescriptionN.toString() + : e.serviceDescription.toString(); + + return Row( + children: [ + //TODO: Needs to add icon in the future when added from the provider + // MyAssets.maintenanceIcon.buildSvg(), + // 8.width, + serviceText.toText(fontSize: 12) + ], + ); + }, + ) .toList(), ), if (services != null && services!.length > 2) - ("+${services!.length - 2} more").toText( + ("+${services!.length - 2} ${LocaleKeys.more.tr()}").toText( color: MyColors.primaryColor, isUnderLine: true, isBold: true, diff --git a/lib/widgets/common_widgets/filters_list.dart b/lib/widgets/common_widgets/filters_list.dart index 5b9c341..2fd1cfd 100644 --- a/lib/widgets/common_widgets/filters_list.dart +++ b/lib/widgets/common_widgets/filters_list.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/models/general_models/widgets_models.dart'; @@ -32,6 +33,8 @@ class FiltersList extends StatelessWidget { itemCount: filterList.length, scrollDirection: Axis.horizontal, itemBuilder: (BuildContext context, int index) { + print("=================================================="); + print(filterList[index].title); return InkWell( onTap: () { onFilterTapped(index, filterList[index].id); @@ -62,7 +65,7 @@ class FiltersList extends StatelessWidget { ], ], // Text displayed in the chip - filterList[index].title.toText( + filterList[index].title.tr().toText( fontSize: 13, letterSpacing: -0.14, color: filterList[index].isSelected ? MyColors.white : null, diff --git a/pubspec.yaml b/pubspec.yaml index 687d3d7..d78b051 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,6 +43,7 @@ dependencies: change_app_package_name: ^1.3.0 share_plus: any toastification: ^2.3.0 + geolocator_android: 4.5.5 # Firebase Packages