diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 00fc619..5981f10 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -686,30 +686,89 @@ extension BranchServiceEnumStatusToInt on ServiceStatusEnum { } } +// extension DateTimeConversions on DateTime { +// String getTimeAgo({bool numericDates = true, bool isArabic = false,}) { +// final date2 = DateTime.now(); +// final difference = date2.difference(this); +// if ((difference.inDays / 7).floor() >= 2) { +// return DateHelper.formatAsDayMonthYear(this, isArabic: isArabic,); +// } else if ((difference.inDays / 7).floor() >= 1) { +// return (numericDates) ? '1 week ago' : 'Last week'; +// } else if (difference.inDays >= 2) { +// return '${difference.inDays} days ago'; +// } else if (difference.inDays >= 1) { +// return (numericDates) ? '1 day ago' : 'Yesterday'; +// } else if (difference.inHours >= 2) { +// return '${difference.inHours} hours ago'; +// } else if (difference.inHours >= 1) { +// return (numericDates) ? '1 hour ago' : 'An hour ago'; +// } else if (difference.inMinutes >= 2) { +// return '${difference.inMinutes} min ago'; +// } else if (difference.inMinutes >= 1) { +// return (numericDates) ? '1 min ago' : 'A min ago'; +// } else if (difference.inSeconds >= 3) { +// return '${difference.inSeconds} sec ago'; +// } else { +// return 'Just now'; +// } +// } +// } + extension DateTimeConversions on DateTime { - String getTimeAgo({bool numericDates = true}) { - final date2 = DateTime.now(); - final difference = date2.difference(this); + String getTimeAgo({ + bool numericDates = true, + bool isArabic = false, + }) { + final now = DateTime.now(); + final difference = now.difference(this); + if ((difference.inDays / 7).floor() >= 2) { - return DateHelper.formatAsDayMonthYear(this); + return DateHelper.formatAsDayMonthYear( + this, + isArabic: isArabic, + ); } else if ((difference.inDays / 7).floor() >= 1) { - return (numericDates) ? '1 week ago' : 'Last week'; + if (isArabic) { + return numericDates ? 'منذ أسبوع' : 'الأسبوع الماضي'; + } + + return numericDates ? '1 week ago' : 'Last week'; } else if (difference.inDays >= 2) { - return '${difference.inDays} days ago'; + return isArabic + ? 'منذ ${difference.inDays} أيام' + : '${difference.inDays} days ago'; } else if (difference.inDays >= 1) { - return (numericDates) ? '1 day ago' : 'Yesterday'; + if (isArabic) { + return numericDates ? 'منذ يوم' : 'أمس'; + } + + return numericDates ? '1 day ago' : 'Yesterday'; } else if (difference.inHours >= 2) { - return '${difference.inHours} hours ago'; + return isArabic + ? 'منذ ${difference.inHours} ساعات' + : '${difference.inHours} hours ago'; } else if (difference.inHours >= 1) { - return (numericDates) ? '1 hour ago' : 'An hour ago'; + if (isArabic) { + return numericDates ? 'منذ ساعة' : 'قبل ساعة'; + } + + return numericDates ? '1 hour ago' : 'An hour ago'; } else if (difference.inMinutes >= 2) { - return '${difference.inMinutes} min ago'; + return isArabic + ? 'منذ ${difference.inMinutes} دقائق' + : '${difference.inMinutes} min ago'; } else if (difference.inMinutes >= 1) { - return (numericDates) ? '1 min ago' : 'A min ago'; + if (isArabic) { + return numericDates ? 'منذ دقيقة' : 'قبل دقيقة'; + } + + return numericDates ? '1 min ago' : 'A min ago'; } else if (difference.inSeconds >= 3) { - return '${difference.inSeconds} sec ago'; + return isArabic + ? 'منذ ${difference.inSeconds} ثوانٍ' + : '${difference.inSeconds} sec ago'; } else { - return 'Just now'; + return isArabic ? 'الآن' : 'Just now'; } } } diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 3f62126..4251fb8 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -441,6 +441,7 @@ class CodegenLoader extends AssetLoader{ "usedSparePart": "قطع غيار مستعملة", "hasYourCarHadAccident": "هل تعرضت سيارتك لأي حادث؟", "odometerReading": "قراءة عداد المسافات (كم)", + "canMileageIncrease": "هل يمكن زيادة المسافة المقطوعة عند الفحص؟", "currentlyInUse": "قيد الاستخدام حاليًا", "demand": "الطلب", "adDurationExpired": "انتهت مدة عرض الإعلان الخاص بك", @@ -1346,6 +1347,7 @@ static const Map _en_US = { "usedSparePart": "Used Spare Part", "hasYourCarHadAccident": "Has your car had any accident?", "odometerReading": "Odometer Reading (Km)", + "canMileageIncrease": "Can the mileage be increased when checking?", "currentlyInUse": "Currently in Use", "demand": "Demand", "adDurationExpired": "Your Ad Duration time is over", diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index eae7b40..7757fbb 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -406,6 +406,7 @@ abstract class LocaleKeys { static const usedSparePart = 'usedSparePart'; static const hasYourCarHadAccident = 'hasYourCarHadAccident'; static const odometerReading = 'odometerReading'; + static const canMileageIncrease = 'canMileageIncrease'; static const currentlyInUse = 'currentlyInUse'; static const demand = 'demand'; static const adDurationExpired = 'adDurationExpired'; diff --git a/lib/models/advertisment_models/ad_details_model.dart b/lib/models/advertisment_models/ad_details_model.dart index c89dbdc..fc0f612 100644 --- a/lib/models/advertisment_models/ad_details_model.dart +++ b/lib/models/advertisment_models/ad_details_model.dart @@ -15,6 +15,7 @@ class AdDetailsModel { // List? reserved; int? statusID; String? statuslabel; + String? statuslabelN; double? adsDurationPrice; double? adsDurationDiscount; double? adsDurationDiscountPrice; @@ -65,6 +66,7 @@ class AdDetailsModel { // this.reserved, this.statusID, this.statuslabel, + this.statuslabelN, this.adsDurationPrice, this.adsDurationDiscount, this.adsDurationDiscountPrice, @@ -126,6 +128,7 @@ class AdDetailsModel { } statusID = json['statusID']; statuslabel = json['statuslabel']; + statuslabelN = json['statuslabelN']; adsDurationPrice = json['adsDurationPrice']; adsDurationDiscount = json['adsDurationDiscount']; adsDurationDiscountPrice = json['adsDurationDiscountPrice']; @@ -172,6 +175,7 @@ class Vehicle { int? id; int? cityID; String? cityName; + String? cityNameN; double? demandAmount; bool? isActive; bool? isFinanceAvailable; @@ -194,6 +198,7 @@ class Vehicle { String? vehicleVIN; int? countryID; String? countryName; + String? countryNameN; String? currency; int? odometer; int? isInUsed; @@ -203,6 +208,7 @@ class Vehicle { {this.id, this.cityID, this.cityName, + this.cityNameN, this.demandAmount, this.isActive, this.isFinanceAvailable, @@ -225,6 +231,7 @@ class Vehicle { this.vehicleVIN, this.countryID, this.countryName, + this.countryNameN, this.currency, this.odometer, this.isInUsed, @@ -234,6 +241,7 @@ class Vehicle { id = json['id']; cityID = json['cityID']; cityName = json['cityName']; + cityNameN = json['cityNameN']; demandAmount = json['demandAmount']; isActive = json['isActive']; isFinanceAvailable = json['isFinanceAvailable']; @@ -266,6 +274,7 @@ class Vehicle { vehicleVIN = json['vehicleVIN']; countryID = json['countryID']; countryName = json['duration'] != null && json['duration']['country'] != null ? json['duration']['country']['label'] : null; + countryNameN = json['duration'] != null && json['duration']['country'] != null ? json['duration']['country']['label'] : null; currency = json['currency']; odometer = json['odometer']; isInUsed = json['isInUsed']; diff --git a/lib/models/provider_branches_models/branch_detail_model.dart b/lib/models/provider_branches_models/branch_detail_model.dart index ed745d9..fe91223 100644 --- a/lib/models/provider_branches_models/branch_detail_model.dart +++ b/lib/models/provider_branches_models/branch_detail_model.dart @@ -32,6 +32,7 @@ class BranchDetailModel { String? countryName; bool isExpanded = false; bool? isFavorite; + String? cityNameN; BranchDetailModel({ @@ -62,6 +63,7 @@ class BranchDetailModel { this.countryName, this.isFavorite, required this.isExpanded, + this.cityNameN, }); List populateBranchImages(value) { @@ -106,6 +108,7 @@ class BranchDetailModel { branchAuditTrial = json["branchAuditTrial"] == null ? [] : List.from(json["branchAuditTrial"]!.map((x) => BranchAuditTrial.fromJson(x))); isExpanded = false; isFavorite = false; + cityNameN = json["cityNameN"]; } } diff --git a/lib/models/requests_models/request_model.dart b/lib/models/requests_models/request_model.dart index 65f0745..9e3ccd9 100644 --- a/lib/models/requests_models/request_model.dart +++ b/lib/models/requests_models/request_model.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:mc_common_app/models/chat_models/chat_message_model.dart'; @@ -12,8 +14,11 @@ class RequestModel { ShippingRequestStatusEnum? shippingStatusEnum; SelfPickupRequestStatusEnum? selfPickupRequestStatusEnum; String cityName; + String cityNameN; String vehicleTypeName; + String vehicleTypeNameN; String countryName; + String countryNameN; String customerName; String customerID; String address; @@ -47,6 +52,7 @@ class RequestModel { int? modifiedBy; String? modifiedOn; List chatMessages; + String? requestStatusNameN; RequestModel({ required this.requestType, @@ -57,8 +63,11 @@ class RequestModel { required this.shippingStatusEnum, required this.selfPickupRequestStatusEnum, required this.cityName, + required this.cityNameN, required this.vehicleTypeName, + required this.vehicleTypeNameN, required this.countryName, + required this.countryNameN, required this.customerName, required this.customerID, required this.serviceProviders, @@ -92,6 +101,7 @@ class RequestModel { required this.modifiedBy, required this.modifiedOn, required this.chatMessages, + required this.requestStatusNameN, }); List populateRequestImages(value) { @@ -114,8 +124,11 @@ class RequestModel { shippingStatusEnum: json['shippingRequestStatus'] != null ? (json['shippingRequestStatus'] as int).toShippingStatusEnum() : ShippingRequestStatusEnum.pending, selfPickupRequestStatusEnum: json['selfPickupRequestStatus'] != null ? (json['selfPickupRequestStatus'] as int).toSelfPickupStatusEnum() : SelfPickupRequestStatusEnum.preparingToCollect, cityName: json["cityName"], + cityNameN: json["cityNameN"], vehicleTypeName: json["vehicleTypeName"], + vehicleTypeNameN: json["vehicleTypeNameN"], countryName: json["countryName"], + countryNameN: json["countryNameN"], customerName: json["customerName"] ?? "", address: json["address"] ?? "", additionalAddressDetails: json['additionalAddress'] ?? "", @@ -148,6 +161,7 @@ class RequestModel { createdOn: json["createdOn"], modifiedBy: json["modifiedBy"], modifiedOn: json["modifiedOn"], + requestStatusNameN: json["requestStatusNameN"], chatMessages: [], ); } diff --git a/lib/utils/date_helper.dart b/lib/utils/date_helper.dart index 9c11007..e332e15 100644 --- a/lib/utils/date_helper.dart +++ b/lib/utils/date_helper.dart @@ -21,8 +21,13 @@ class DateHelper { return formatter.format(date); } - static String formatAsTime(DateTime date) { - final formatter = DateFormat.jm(); + // static String formatAsTime(DateTime date) { + // final formatter = DateFormat.jm(); + // return formatter.format(date); + // } + static String formatAsTime(DateTime date, {bool isArabic = false,}) { + final formatter = DateFormat.jm( + isArabic ? 'ar' : 'en',); return formatter.format(date); } @@ -36,8 +41,15 @@ class DateHelper { return formatter.format(date); } - static String formatAsDayMonthYear(DateTime? date) { - final formatter = DateFormat('d MMM, y'); + // static String formatAsDayMonthYear(DateTime? date) { + // final formatter = DateFormat('d MMM, y'); + // return date != null ? formatter.format(date) : "N/A"; + // } + static String formatAsDayMonthYear(DateTime? date, + { bool isArabic = false,}) { + final formatter = DateFormat('d MMM, y', + isArabic ? 'ar' : 'en', + ); return date != null ? formatter.format(date) : "N/A"; } diff --git a/lib/view_models/ad_view_model.dart b/lib/view_models/ad_view_model.dart index 4e9bcac..dd332e5 100644 --- a/lib/view_models/ad_view_model.dart +++ b/lib/view_models/ad_view_model.dart @@ -194,19 +194,20 @@ class AdVM extends BaseVM { exploreAdsFilterOptions.clear(); myAdsFilterOptions.clear(); for (int i = 0; i < myAdsStatusEnums.length; i++) { - myAdsFilterOptions.add(FilterListModel(title: myAdsStatusEnums[i].enumValueStr, isSelected: false, id: myAdsStatusEnums[i].enumValue)); + myAdsFilterOptions.add(FilterListModel(title: myAdsStatusEnums[i].enumValueStr, titleN: myAdsStatusEnums[i].enumValueStrN, isSelected: false, id: myAdsStatusEnums[i].enumValue)); } - myAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", isSelected: true, id: 0)); + myAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", titleN: "جميع الاعلانات", isSelected: true, id: 0)); for (int i = 0; i < vehicleBrandsForFilters.length; i++) { exploreAdsFilterOptions.add(FilterListModel( id: vehicleBrandsForFilters[i].id!, title: "${vehicleBrandsForFilters[i].vehicleBrandDescription}", + titleN: "${vehicleBrandsForFilters[i].vehicleBrandDescriptionN}", iconUrl: vehicleBrandsForFilters[i].imageUrl ?? "", isSelected: false, )); } - exploreAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", isSelected: true, id: 0)); + exploreAdsFilterOptions.insert(0, FilterListModel(title: "All Ads", titleN: "جميع الاعلانات", isSelected: true, id: 0)); notifyListeners(); } diff --git a/lib/view_models/requests_view_model.dart b/lib/view_models/requests_view_model.dart index a1639d2..c373bac 100644 --- a/lib/view_models/requests_view_model.dart +++ b/lib/view_models/requests_view_model.dart @@ -216,7 +216,7 @@ class RequestsVM extends BaseVM { if (acceptedRequestsTypeFilterOptions.isEmpty) { for (int i = 0; i < myRequestsTypeEnum.length; i++) { - acceptedRequestsTypeFilterOptions.add(FilterListModel(title: myRequestsTypeEnum[i].enumValueStr, isSelected: false, id: myRequestsTypeEnum[i].enumValue)); + acceptedRequestsTypeFilterOptions.add(FilterListModel(title: myRequestsTypeEnum[i].enumValueStr, titleN: myRequestsTypeEnum[i].enumValueStrN, isSelected: false, id: myRequestsTypeEnum[i].enumValue)); } acceptedRequestsTypeFilterOptions[0].isSelected = true; } @@ -383,16 +383,16 @@ class RequestsVM extends BaseVM { if (requestsTypeFilterOptions.isEmpty || acceptedRequestsTypeFilterOptions.isEmpty) { for (int i = 0; i < myRequestsTypeEnum.length; i++) { - requestsTypeFilterOptions.add(FilterListModel(title: myRequestsTypeEnum[i].enumValueStr, isSelected: false, id: myRequestsTypeEnum[i].enumValue)); - acceptedRequestsTypeFilterOptions.add(FilterListModel(title: myRequestsTypeEnum[i].enumValueStr, isSelected: false, id: myRequestsTypeEnum[i].enumValue)); + requestsTypeFilterOptions.add(FilterListModel(title: myRequestsTypeEnum[i].enumValueStr,titleN: myRequestsTypeEnum[i].enumValueStrN, isSelected: false, id: myRequestsTypeEnum[i].enumValue)); + acceptedRequestsTypeFilterOptions.add(FilterListModel(title: myRequestsTypeEnum[i].enumValueStr, titleN: myRequestsTypeEnum[i].enumValueStrN, isSelected: false, id: myRequestsTypeEnum[i].enumValue)); } } // Initialize spare parts condition filters (All, New, Used) if (sparePartsConditionFilterOptions.isEmpty) { - sparePartsConditionFilterOptions.add(FilterListModel(title: "All", isSelected: true, id: 3)); // All - sparePartsConditionFilterOptions.add(FilterListModel(title: "New Spare Part", isSelected: false, id: 1)); // New - sparePartsConditionFilterOptions.add(FilterListModel(title: "Used Spare Part", isSelected: false, id: 2)); // Used + sparePartsConditionFilterOptions.add(FilterListModel(title: "All", titleN: "الكل", isSelected: true, id: 3)); // All + sparePartsConditionFilterOptions.add(FilterListModel(title: "New Spare Part", titleN: "قطعة غيار جديدة", isSelected: false, id: 1)); // New + sparePartsConditionFilterOptions.add(FilterListModel(title: "Used Spare Part",titleN: "قطعة غيار مستعملة", isSelected: false, id: 2)); // Used } if (vehicleBrands.isEmpty) { diff --git a/lib/views/advertisement/ad_creation_steps/vehicle_details_container.dart b/lib/views/advertisement/ad_creation_steps/vehicle_details_container.dart index 7461c5b..9bcd44e 100644 --- a/lib/views/advertisement/ad_creation_steps/vehicle_details_container.dart +++ b/lib/views/advertisement/ad_creation_steps/vehicle_details_container.dart @@ -25,6 +25,7 @@ class VehicleDetails extends StatelessWidget { @override Widget build(BuildContext context) { + bool isArabic = AppState().isArabic(context); return Consumer(builder: (BuildContext context, AdVM adVM, Widget? child) { String roleAppState = ""; String roleName = ""; @@ -56,7 +57,7 @@ class VehicleDetails extends StatelessWidget { builder: (context) { List vehicleBrandsDrop = []; for (var element in adVM.vehicleBrands) { - vehicleBrandsDrop.add(DropValue(element.id?.toInt() ?? 0, element.vehicleBrandDescription ?? "", "")); + vehicleBrandsDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? element.vehicleBrandDescriptionN ?? "" : element.vehicleBrandDescription ?? "", "")); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleBrandId(SelectionModel(selectedId: value.id, selectedOption: value.value)), @@ -106,12 +107,16 @@ class VehicleDetails extends StatelessWidget { Builder(builder: (context) { List vehicleModelsDrop = []; for (var element in adVM.vehicleModels) { - vehicleModelsDrop.add(DropValue(element.id?.toInt() ?? 0, element.model ?? "", "")); + // vehicleModelsDrop.add(DropValue(element.id?.toInt() ?? 0, element.model ?? "", "")); + vehicleModelsDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? (element.modelN ?? element.model ?? ""): (element.model ?? ""), "", + ), + ); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleModelId(SelectionModel(selectedId: value.id, selectedOption: value.value)), list: vehicleModelsDrop, - dropdownValue: adVM.vehicleModelId.selectedId != -1 ? DropValue(adVM.vehicleModelId.selectedId, adVM.vehicleModelId.selectedOption, "") : null, + // dropdownValue: adVM.vehicleModelId.selectedId != -1 ? DropValue(adVM.vehicleModelId.selectedId, adVM.vehicleModelId.selectedOption, "") : null, + dropdownValue: adVM.vehicleModelId.selectedId != -1 ? vehicleModelsDrop.firstWhere((item) => item.id == adVM.vehicleModelId.selectedId,) : null, hint: LocaleKeys.vehicleModel.tr(), errorValue: adVM.vehicleModelId.errorValue, ); @@ -135,13 +140,17 @@ class VehicleDetails extends StatelessWidget { Builder(builder: (context) { List vehicleColorsDrop = []; for (var element in adVM.vehicleColors) { - vehicleColorsDrop.add(DropValue(element.id?.toInt() ?? 0, element.color ?? "", "")); + // vehicleColorsDrop.add(DropValue(element.id?.toInt() ?? 0, element.color ?? "", "")); + vehicleColorsDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? (element.colorN ?? element.color ?? ""): (element.color ?? ""), "", + ), + ); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleColorId(SelectionModel(selectedId: value.id, selectedOption: value.value)), list: vehicleColorsDrop, hint: LocaleKeys.vehicleColor.tr(), - dropdownValue: adVM.vehicleColorId.selectedId != -1 ? DropValue(adVM.vehicleColorId.selectedId, adVM.vehicleColorId.selectedOption, "") : null, + // dropdownValue: adVM.vehicleColorId.selectedId != -1 ? DropValue(adVM.vehicleColorId.selectedId, adVM.vehicleColorId.selectedOption, "") : null, + dropdownValue: adVM.vehicleColorId.selectedId != -1 ? vehicleColorsDrop.firstWhere((item) => item.id == adVM.vehicleColorId.selectedId,) : null, errorValue: adVM.vehicleColorId.errorValue, ); }), @@ -149,12 +158,14 @@ class VehicleDetails extends StatelessWidget { Builder(builder: (context) { List vehicleConditionsDrop = []; for (var element in adVM.vehicleConditions) { - vehicleConditionsDrop.add(DropValue(element.id?.toInt() ?? 0, element.condition ?? "", "")); + vehicleConditionsDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? (element.conditionN ?? element.condition ?? ""): (element.condition ?? ""), "")); + // vehicleConditionsDrop.add(DropValue(element.id?.toInt() ?? 0, element.condition ?? "", "")); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleConditionId(SelectionModel(selectedId: value.id, selectedOption: value.value)), list: vehicleConditionsDrop, - dropdownValue: adVM.vehicleConditionId.selectedId != -1 ? DropValue(adVM.vehicleConditionId.selectedId, adVM.vehicleConditionId.selectedOption, "") : null, + dropdownValue: adVM.vehicleConditionId.selectedId != -1 ? vehicleConditionsDrop.firstWhere((item) => item.id == adVM.vehicleConditionId.selectedId,) : null, + // dropdownValue: adVM.vehicleConditionId.selectedId != -1 ? DropValue(adVM.vehicleConditionId.selectedId, adVM.vehicleConditionId.selectedOption, "") : null, hint: LocaleKeys.vehicleCondition.tr(), errorValue: adVM.vehicleConditionId.errorValue, ); @@ -163,13 +174,15 @@ class VehicleDetails extends StatelessWidget { Builder(builder: (context) { List vehicleCategoriesDrop = []; for (var element in adVM.vehicleCategories) { - vehicleCategoriesDrop.add(DropValue(element.id?.toInt() ?? 0, element.category ?? "", "")); + vehicleCategoriesDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? (element.categoryN ?? element.category ?? ""): (element.category ?? ""), "")); + // vehicleCategoriesDrop.add(DropValue(element.id?.toInt() ?? 0, element.category ?? "", "")); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleCategoryId(SelectionModel(selectedId: value.id, selectedOption: value.value)), list: vehicleCategoriesDrop, hint: LocaleKeys.vehicleCategory.tr(), - dropdownValue: adVM.vehicleCategoryId.selectedId != -1 ? DropValue(adVM.vehicleCategoryId.selectedId, adVM.vehicleCategoryId.selectedOption, "") : null, + dropdownValue: adVM.vehicleCategoryId.selectedId != -1 ? vehicleCategoriesDrop.firstWhere((item) => item.id == adVM.vehicleCategoryId.selectedId,) : null, + // dropdownValue: adVM.vehicleCategoryId.selectedId != -1 ? DropValue(adVM.vehicleCategoryId.selectedId, adVM.vehicleCategoryId.selectedOption, "") : null, errorValue: adVM.vehicleCategoryId.errorValue, ); }), @@ -191,13 +204,15 @@ class VehicleDetails extends StatelessWidget { Builder(builder: (context) { List vehicleTransmissionsDrop = []; for (var element in adVM.vehicleTransmissions) { - vehicleTransmissionsDrop.add(DropValue(element.id?.toInt() ?? 0, element.transmission ?? "", "")); + vehicleTransmissionsDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? (element.transmissionN ?? element.transmission ?? ""): (element.transmission ?? ""), "")); + // vehicleTransmissionsDrop.add(DropValue(element.id?.toInt() ?? 0, element.transmission ?? "", "")); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleTransmissionId(SelectionModel(selectedId: value.id, selectedOption: value.value)), list: vehicleTransmissionsDrop, hint: LocaleKeys.vehicleTransmission.tr(), - dropdownValue: adVM.vehicleTransmissionId.selectedId != -1 ? DropValue(adVM.vehicleTransmissionId.selectedId, adVM.vehicleTransmissionId.selectedOption, "") : null, + dropdownValue: adVM.vehicleTransmissionId.selectedId != -1 ? vehicleTransmissionsDrop.firstWhere((item) => item.id == adVM.vehicleTransmissionId.selectedId,) : null, + //dropdownValue: adVM.vehicleTransmissionId.selectedId != -1 ? DropValue(adVM.vehicleTransmissionId.selectedId, adVM.vehicleTransmissionId.selectedOption, "") : null, errorValue: adVM.vehicleTransmissionId.errorValue, ); }), @@ -206,12 +221,14 @@ class VehicleDetails extends StatelessWidget { Builder(builder: (context) { List vehicleCountriesDrop = []; for (var element in adVM.vehicleCountries) { - vehicleCountriesDrop.add(DropValue(element.id?.toInt() ?? 0, element.countryName ?? "", "")); + vehicleCountriesDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? (element.countryNameN ?? element.countryName ?? ""): (element.countryName ?? ""), "")); + // vehicleCountriesDrop.add(DropValue(element.id?.toInt() ?? 0, element.countryName ?? "", "")); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleCountryId(SelectionModel(selectedOption: value.value, selectedId: value.id)), list: vehicleCountriesDrop, - dropdownValue: adVM.vehicleCountryId.selectedId != -1 ? DropValue(adVM.vehicleCountryId.selectedId, adVM.vehicleCountryId.selectedOption, "") : null, + dropdownValue: adVM.vehicleCountryId.selectedId != -1 ? vehicleCountriesDrop.firstWhere((item) => item.id == adVM.vehicleCountryId.selectedId,) : null, + // dropdownValue: adVM.vehicleCountryId.selectedId != -1 ? DropValue(adVM.vehicleCountryId.selectedId, adVM.vehicleCountryId.selectedOption, "") : null, hint: LocaleKeys.vehicleCountry.tr(), errorValue: adVM.vehicleCountryId.errorValue, ); @@ -227,12 +244,14 @@ class VehicleDetails extends StatelessWidget { Builder(builder: (context) { List vehicleCitiesDrop = []; for (var element in adVM.vehicleCities) { - vehicleCitiesDrop.add(DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", "")); + vehicleCitiesDrop.add(DropValue(element.id?.toInt() ?? 0, isArabic ? (element.cityNameN ?? element.cityName ?? ""): (element.cityName ?? ""), "")); + // vehicleCitiesDrop.add(DropValue(element.id?.toInt() ?? 0, element.cityName ?? "", "")); } return DropdownField( (DropValue value) => adVM.updateSelectionVehicleCityId(SelectionModel(selectedId: value.id, selectedOption: value.value)), list: vehicleCitiesDrop, - dropdownValue: adVM.vehicleCityId.selectedId != -1 ? DropValue(adVM.vehicleCityId.selectedId, adVM.vehicleCityId.selectedOption, "") : null, + dropdownValue: adVM.vehicleCityId.selectedId != -1 ? vehicleCitiesDrop.firstWhere((item) => item.id == adVM.vehicleCityId.selectedId,) : null, + // dropdownValue: adVM.vehicleCityId.selectedId != -1 ? DropValue(adVM.vehicleCityId.selectedId, adVM.vehicleCityId.selectedOption, "") : null, hint: LocaleKeys.vehicleCity.tr(), errorValue: adVM.vehicleCityId.errorValue, ); 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 11a34a0..08f9860 100644 --- a/lib/views/advertisement/ads_detail_view/ads_detail_view.dart +++ b/lib/views/advertisement/ads_detail_view/ads_detail_view.dart @@ -117,7 +117,7 @@ class _AdsDetailViewState extends State { 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), + (isArabic ? widget.adDetails.vehicle!.cityNameN ?? "" : widget.adDetails.vehicle!.cityName ?? "").toText(fontSize: 10, color: MyColors.lightTextColor), ], ), Row( @@ -129,7 +129,7 @@ class _AdsDetailViewState extends State { "${isArabic? widget.adDetails.vehicle!.model!.labelN :widget.adDetails.vehicle!.model!.label}".toText(fontSize: 12), ], ), - (widget.adDetails.vehicle!.countryName ?? '').toText(fontSize: 10, color: MyColors.lightTextColor), + (isArabic ? widget.adDetails.vehicle!.countryNameN?? '' : widget.adDetails.vehicle!.countryName?? '').toText(fontSize: 10, color: MyColors.lightTextColor), ], ), Row( @@ -148,7 +148,9 @@ class _AdsDetailViewState extends State { "${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(), + widget.adDetails.createdOn != null + ? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo(isArabic: isArabic).toText(fontSize: 10,color: MyColors.lightTextColor,): const SizedBox(), + //widget.adDetails.createdOn != null ? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo().toText(fontSize: 10, color: MyColors.lightTextColor) : const SizedBox(), ], ), Row( @@ -384,12 +386,26 @@ class _AdsDetailViewState extends State { Widget buildAdStartEndDates() { String startDate = ""; String endDate = ""; - - if (widget.adDetails.startdate != null) { - startDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.startdate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.startdate!))}"; + bool isArabic = AppState().isArabic(context); + final atText = isArabic ? "الساعة" : "at"; + + // if (widget.adDetails.startdate != null) { + // startDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.startdate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.startdate!))}"; + // } + // if (widget.adDetails.enddate != null) { + // endDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.enddate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.enddate!))}"; + // } + if (widget.adDetails.startdate != null) {startDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.startdate!), + isArabic: isArabic,)} $atText ${DateHelper.formatAsTime( + DateTime.parse(widget.adDetails.startdate!), + isArabic: isArabic, + )}"; } - if (widget.adDetails.enddate != null) { - endDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.enddate!))} at ${DateHelper.formatAsTime(DateTime.parse(widget.adDetails.enddate!))}"; + if (widget.adDetails.enddate != null) {endDate = "${DateHelper.formatAsDayMonthYear(DateTime.parse(widget.adDetails.enddate!), + isArabic: isArabic,)} $atText ${DateHelper.formatAsTime( + DateTime.parse(widget.adDetails.enddate!), + isArabic: isArabic, + )}"; } return Column( children: [ diff --git a/lib/views/advertisement/components/ads_list_widget.dart b/lib/views/advertisement/components/ads_list_widget.dart index ee59eef..54eecab 100644 --- a/lib/views/advertisement/components/ads_list_widget.dart +++ b/lib/views/advertisement/components/ads_list_widget.dart @@ -275,10 +275,31 @@ class _AdCardState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - if (isAdsFragment && widget.adDetails.adPostStatus! == AdPostStatus.sold && widget.adDetails.statuslabel != null && widget.adDetails.statuslabel!.isNotEmpty) ...[ - Utils.statusContainerChip(text: widget.adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(widget.adDetails.adPostStatus!)), - ] else if (isAdsFragment && !context.read().isExploreAdsTapped && widget.adDetails.statuslabel != null && widget.adDetails.statuslabel!.isNotEmpty) ...[ - Utils.statusContainerChip(text: widget.adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(widget.adDetails.adPostStatus!)), + // if (isAdsFragment && adDetails.adPostStatus! == AdPostStatus.sold && adDetails.statuslabel != null && adDetails.statuslabel!.isNotEmpty) ...[ + // Utils.statusContainerChip(text: adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)), + // ] else if (isAdsFragment && !context.read().isExploreAdsTapped && adDetails.statuslabel != null && adDetails.statuslabel!.isNotEmpty) ...[ + // Utils.statusContainerChip(text: adDetails.statuslabel ?? "", chipColor: Utils.getChipColorByAdStatus(adDetails.adPostStatus!)), + // ], + if (isAdsFragment && + widget.adDetails.adPostStatus! == AdPostStatus.sold && + widget.adDetails.statuslabel != null && + widget.adDetails.statuslabel!.isNotEmpty) ...[ + Utils.statusContainerChip( + text: isArabic + ? (widget.adDetails.statuslabelN ?? "") + : (widget.adDetails.statuslabel ?? ""), + chipColor: Utils.getChipColorByAdStatus(widget.adDetails.adPostStatus!), + ), + ] else if (isAdsFragment && + !context.read().isExploreAdsTapped && + widget.adDetails.statuslabel != null && + widget.adDetails.statuslabel!.isNotEmpty) ...[ + Utils.statusContainerChip( + text: isArabic + ? (widget.adDetails.statuslabelN ?? "") + : (widget.adDetails.statuslabel ?? ""), + chipColor: Utils.getChipColorByAdStatus(widget.adDetails.adPostStatus!), + ), ], // Show Accident Free chip for explore ads when isAccidentFree is true if (isAdsFragment && context.read().isExploreAdsTapped && widget.adDetails.vehicle?.isAccidentFree == true) ...[ @@ -328,8 +349,16 @@ class _AdCardState extends State { crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.start, children: [ - (widget.adDetails.vehicle!.cityName ?? "").toText(color: MyColors.lightTextColor), - widget.adDetails.createdOn != null ? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo().toText(color: MyColors.lightTextColor) : const SizedBox(), + (isArabic? widget.adDetails.vehicle!.cityNameN ?? "" : widget.adDetails.vehicle!.cityName ?? "").toText(color: MyColors.lightTextColor), + // widget.adDetails.createdOn != null ? DateTime.parse(widget.adDetails.createdOn!).getTimeAgo().toText(color: MyColors.lightTextColor) : const SizedBox(), + widget.adDetails.createdOn != null + ? DateFormat( + 'd MMM, y', + isArabic ? 'ar' : 'en', + ) + .format(DateTime.parse(widget.adDetails.createdOn!)) + .toText(color: MyColors.lightTextColor) + : const SizedBox(), ], ), ], diff --git a/lib/views/advertisement/create_ad_view.dart b/lib/views/advertisement/create_ad_view.dart index f06e88a..38e3168 100644 --- a/lib/views/advertisement/create_ad_view.dart +++ b/lib/views/advertisement/create_ad_view.dart @@ -73,6 +73,7 @@ class BuildFooterButton extends StatelessWidget { @override Widget build(BuildContext context) { + final isArabic = AppState().isArabic(context); return Consumer( builder: (BuildContext context, AdVM adVm, Widget? child) { switch (adVm.currentProgressStep) { @@ -83,7 +84,8 @@ class BuildFooterButton extends StatelessWidget { child: ShowFillButton( txtColor: MyColors.black, maxHeight: 55, - title: "Save As Draft", + // title: "Save As Draft", + title: isArabic ? "حفظ كمسودة" : "Save As Draft", onPressed: () async { await adVm.saveAdAsDraft(context: context, stepNoEnum: AdCreationStepsEnum.vehicleDetails, bypassValidation: true); adVm.isDraftEditEnabled = false; @@ -118,7 +120,8 @@ class BuildFooterButton extends StatelessWidget { child: ShowFillButton( txtColor: MyColors.black, maxHeight: 55, - title: "Save As Draft", + // title: "Save As Draft", + title: isArabic ? "حفظ كمسودة" : "Save As Draft", onPressed: () async { await adVm.saveAdAsDraft(context: context, stepNoEnum: AdCreationStepsEnum.damageParts, bypassValidation: true); adVm.isDraftEditEnabled = false; @@ -153,7 +156,8 @@ class BuildFooterButton extends StatelessWidget { child: ShowFillButton( txtColor: MyColors.black, maxHeight: 55, - title: "Save As Draft", + // title: "Save As Draft", + title: isArabic ? "حفظ كمسودة" : "Save As Draft", onPressed: () async { await adVm.saveAdAsDraft(context: context, stepNoEnum: AdCreationStepsEnum.adDuration, bypassValidation: true); adVm.isDraftEditEnabled = false; @@ -188,7 +192,8 @@ class BuildFooterButton extends StatelessWidget { child: ShowFillButton( txtColor: MyColors.black, maxHeight: 55, - title: "Save As Draft", + //title: "Save As Draft", + title: isArabic ? "حفظ كمسودة" : "Save As Draft", onPressed: () async { await adVm.saveAdAsDraft(context: context, stepNoEnum: AdCreationStepsEnum.reviewAd, bypassValidation: true); adVm.isDraftEditEnabled = false; diff --git a/lib/views/advertisement/select_ad_type_view.dart b/lib/views/advertisement/select_ad_type_view.dart index 5961765..82da2fa 100644 --- a/lib/views/advertisement/select_ad_type_view.dart +++ b/lib/views/advertisement/select_ad_type_view.dart @@ -70,13 +70,14 @@ class SelectAdTypeView extends StatelessWidget { children: [ Expanded( child: Consumer(builder: (BuildContext context, AdVM adVM, Widget? child) { + final isArabic = AppState().isArabic(context); return ListView.separated( itemCount: adVM.vehicleTypes.length, itemBuilder: (BuildContext context, int index) { VehicleTypeModel vehicleTypeModel = adVM.vehicleTypes[index]; return InkWell( onTap: () async { - adVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: vehicleTypeModel.vehicleTypeName ?? "", errorValue: "")); + adVM.updateSelectionVehicleTypeId(SelectionModel(selectedId: vehicleTypeModel.id!, selectedOption: isArabic ? vehicleTypeModel.vehicleTypeNameN ?? "" : vehicleTypeModel.vehicleTypeName ?? "", errorValue: "")); if (adVM.isAdEditEnabled) { adVM.autoFillSelectedVehicleAdsDetails(context); } @@ -113,7 +114,9 @@ class SelectAdTypeView extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18), + isArabic ? vehicleTypeModel.vehicleTypeNameN.toString().toText(fontSize: 18) + : vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18), + // vehicleTypeModel.vehicleTypeName.toString().toText(fontSize: 18), getVehicleAdTypeIcon(vehicleTypeModel.vehicleTypeEnum!), ], ), diff --git a/lib/views/requests/request_detail_page.dart b/lib/views/requests/request_detail_page.dart index 5efe370..78671be 100644 --- a/lib/views/requests/request_detail_page.dart +++ b/lib/views/requests/request_detail_page.dart @@ -29,6 +29,7 @@ class RequestDetailPage extends StatelessWidget { const RequestDetailPage({super.key, required this.requestDetailPageArguments}); Widget buildRequestDetailsContainer(BuildContext context) { + bool isArabic = AppState().isArabic(context); final requestDetail = requestDetailPageArguments.requestModel; return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -42,7 +43,7 @@ class RequestDetailPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - requestDetail.vehicleTypeName.toText(fontSize: 16, letterSpacing: -0.64), + isArabic ? requestDetail.vehicleTypeNameN.toText(fontSize: 16, letterSpacing: -0.64) : requestDetail.vehicleTypeName.toText(fontSize: 16, letterSpacing: -0.64), showItem("${LocaleKeys.brand.tr()}: ", requestDetail.brand), showItem("${LocaleKeys.model.tr()}: ", requestDetail.model), showItem("${LocaleKeys.year.tr()}: ", "${requestDetail.year}"), @@ -53,13 +54,21 @@ class RequestDetailPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.start, children: [ - "${requestDetail.city ?? ""} ${requestDetail.countryName}".toText( + "${isArabic ? requestDetail.cityNameN : requestDetail.city} " + "${isArabic ? requestDetail.countryNameN : requestDetail.countryName}" + .toText( color: MyColors.lightTextColor, ), + // "${requestDetail.city ?? ""} ${requestDetail.countryName}".toText( + // color: MyColors.lightTextColor, + // ), if (requestDetail.createdOn != null) ...[ - DateTime.parse(requestDetail.createdOn!).getTimeAgo().toText( - color: MyColors.lightTextColor, - ), + // DateTime.parse(requestDetail.createdOn!).getTimeAgo().toText( + // color: MyColors.lightTextColor, + // ), + DateTime.parse(requestDetail.createdOn!).getTimeAgo(isArabic: isArabic) + .toText(color: MyColors.lightTextColor, + ), ], ], ), diff --git a/lib/views/requests/widget/request_item.dart b/lib/views/requests/widget/request_item.dart index e3f15e1..138b246 100644 --- a/lib/views/requests/widget/request_item.dart +++ b/lib/views/requests/widget/request_item.dart @@ -21,6 +21,7 @@ class RequestItem extends StatelessWidget { @override Widget build(BuildContext context) { + final isArabic = AppState().isArabic(context); String imageUrl = ""; if (request.requestImages != null && request.requestImages!.isNotEmpty) { imageUrl = request.requestImages!.first.imageUrl ?? ""; @@ -42,9 +43,20 @@ class RequestItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ if (shouldShowStatuses) ...[ + // Utils.statusContainerChip( + // text: request.requestStatusName.toLowerCase() == "InProgress".toLowerCase() ? "In Progress" : request.requestStatusName, + // chipColor: Utils.getChipColorByRequestStatus(request.requestStatus)), Utils.statusContainerChip( - text: request.requestStatusName.toLowerCase() == "InProgress".toLowerCase() ? "In Progress" : request.requestStatusName, - chipColor: Utils.getChipColorByRequestStatus(request.requestStatus)), + text: isArabic + ? (request.requestStatusNameN?.isNotEmpty == true + ? request.requestStatusNameN! + : request.requestStatusName) + : (request.requestStatusName.toLowerCase() == "inprogress" + ? "In Progress" + : request.requestStatusName), + chipColor: + Utils.getChipColorByRequestStatus(request.requestStatus), + ), ], 6.height, "${request.brand} ${request.model} | ${request.id}".toText(fontSize: 16, letterSpacing: -0.64), @@ -61,7 +73,7 @@ class RequestItem extends StatelessWidget { showItem("${LocaleKeys.year.tr()}:", "${request.year}"), ], if (request.vehicleTypeName.isNotEmpty) ...[ - showItem("${LocaleKeys.vehicleType.tr()}:", request.vehicleTypeName), + showItem("${LocaleKeys.vehicleType.tr()}:", isArabic ? request.vehicleTypeNameN :request.vehicleTypeName), ], showItem("${LocaleKeys.description.tr()}:", request.description), ], @@ -86,9 +98,21 @@ class RequestItem extends StatelessWidget { ), ], 2.height, - request.cityName.toText(color: MyColors.lightTextColor, letterSpacing: -0.4, fontSize: 10), + // request.cityName.toText(color: MyColors.lightTextColor, letterSpacing: -0.4, fontSize: 10), + // if (request.createdOn != null) ...[ + // DateTime.parse(request.createdOn!).getTimeAgo().toText(color: MyColors.lightTextColor, letterSpacing: -0.4, fontSize: 10), + // ], + (isArabic + ? (request.cityNameN?.isNotEmpty == true ? request.cityNameN! : request.cityName) : request.cityName).toText(color: MyColors.lightTextColor, + letterSpacing: -0.4, + fontSize: 10, + ), if (request.createdOn != null) ...[ - DateTime.parse(request.createdOn!).getTimeAgo().toText(color: MyColors.lightTextColor, letterSpacing: -0.4, fontSize: 10), + DateTime.parse(request.createdOn!).getTimeAgo(isArabic: isArabic).toText( + color: MyColors.lightTextColor, + letterSpacing: -0.4, + fontSize: 10, + ), ], ], ) diff --git a/lib/views/setting_options/widgets/custom_setting_options_tile.dart b/lib/views/setting_options/widgets/custom_setting_options_tile.dart index 1d6cef1..417b78b 100644 --- a/lib/views/setting_options/widgets/custom_setting_options_tile.dart +++ b/lib/views/setting_options/widgets/custom_setting_options_tile.dart @@ -7,6 +7,8 @@ import 'package:mc_common_app/generated/locale_keys.g.dart'; import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; +import '../../../classes/app_state.dart'; + class CustomSettingOptionsTile extends StatelessWidget { final Widget leadingWidget; final String titleText; @@ -31,6 +33,7 @@ class CustomSettingOptionsTile extends StatelessWidget { @override Widget build(BuildContext context) { + final isArabic = AppState().isArabic(context); return Column( children: [ Row( @@ -56,10 +59,20 @@ class CustomSettingOptionsTile extends StatelessWidget { ], ), isForLanguage - ? LocaleKeys.english.tr().toText(fontSize: 12, isUnderLine: true, color: MyColors.primaryColor) + ? (isArabic ? "English": "عربي") + .toText( + fontSize: 12, + isUnderLine: true, + color: MyColors.primaryColor, + ) : showTrailingArrow - ? const Icon(Icons.arrow_forward, size: 18) - : const SizedBox() + ? const Icon(Icons.arrow_forward, size: 18) + : const SizedBox(), + // isForLanguage + // ? LocaleKeys.english.tr().toText(fontSize: 12, isUnderLine: true, color: MyColors.primaryColor) + // : showTrailingArrow + // ? const Icon(Icons.arrow_forward, size: 18) + // : const SizedBox() ], ).onPress(onTap), subTitle != null ? 3.height : 5.height, diff --git a/lib/views/user/forget_password_page.dart b/lib/views/user/forget_password_page.dart index 51d7ca5..cedaf04 100644 --- a/lib/views/user/forget_password_page.dart +++ b/lib/views/user/forget_password_page.dart @@ -15,6 +15,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import '../../classes/app_state.dart'; + class ForgetPasswordPage extends StatefulWidget { const ForgetPasswordPage({Key? key}) : super(key: key); @@ -133,11 +135,19 @@ class _ForgetPasswordPageState extends State { } Widget getCountry() { + bool isArabic = AppState().isArabic(context); if (_country != null) { List dropList = []; _country!.data?.forEach( (element) { - dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? "")); + // dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? "")); + dropList.add( + DropValue( + element.id ?? 0, + "${isArabic ? (element.countryNameN ?? element.countryName ?? "") : (element.countryName ?? "")} ${element.countryCode ?? ""}", + element.countryCode ?? "", + ), + ); }, ); return Padding( diff --git a/lib/views/user/login_with_password_page.dart b/lib/views/user/login_with_password_page.dart index 6144d8e..12bb75f 100644 --- a/lib/views/user/login_with_password_page.dart +++ b/lib/views/user/login_with_password_page.dart @@ -179,15 +179,48 @@ class _LoginWithPasswordState extends State { ); } + // Widget getCountry(BuildContext context) { + // if (_country != null) { + // List dropList = []; + // _country!.data?.forEach((element) { + // dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? "")); + // }); + // return DropdownField( + // dropdownValue: tempCountry, + // (DropValue value) { + // countryCode = value.subValue; + // tempCountry = value; + // setState(() {}); + // }, + // list: dropList, + // hint: LocaleKeys.selectCountryCode.tr(), + // ); + // } else { + // return const Center( + // child: CircularProgressIndicator(), + // ); + // } + // } + Widget getCountry(BuildContext context) { + bool isArabic = AppState().isArabic(context); + if (_country != null) { List dropList = []; + _country!.data?.forEach((element) { - dropList.add(DropValue(element.id ?? 0, "${element.countryName ?? ""} ${element.countryCode ?? ""}", element.countryCode ?? "")); + dropList.add( + DropValue( + element.id ?? 0, + "${isArabic ? (element.countryNameN ?? element.countryName ?? "") : (element.countryName ?? "")} ${element.countryCode ?? ""}", + element.countryCode ?? "", + ), + ); }); + return DropdownField( dropdownValue: tempCountry, - (DropValue value) { + (DropValue value) { countryCode = value.subValue; tempCountry = value; setState(() {}); diff --git a/lib/widgets/common_widgets/filters_list.dart b/lib/widgets/common_widgets/filters_list.dart index e9bd1e0..6eb0ac9 100644 --- a/lib/widgets/common_widgets/filters_list.dart +++ b/lib/widgets/common_widgets/filters_list.dart @@ -69,15 +69,21 @@ class FiltersList extends StatelessWidget { ], // Text displayed in the chip (isArabic - ? (filterList[index].titleN ?? filterList[index].title) - : filterList[index].title) - .tr() - .toText( - // filterList[index].title.tr().toText( - fontSize: 13, - letterSpacing: -0.14, - color: filterList[index].isSelected ? MyColors.white : null, - ), + ? (filterList[index].titleN.isNotEmpty ? filterList[index].titleN : filterList[index].title) : filterList[index].title).toText( + fontSize: 13, + letterSpacing: -0.14, + color: filterList[index].isSelected ? MyColors.white : null, + ) + // (isArabic + // ? (filterList[index].titleN ?? filterList[index].title) + // : filterList[index].title) + // .tr() + // .toText( + // // filterList[index].title.tr().toText( + // fontSize: 13, + // letterSpacing: -0.14, + // color: filterList[index].isSelected ? MyColors.white : null, + // ), ], ), ), diff --git a/pubspec.lock b/pubspec.lock index 516fca5..8a3bd1e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -93,10 +93,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "1.4.1" clock: dependency: transitive description: @@ -817,26 +817,26 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://pub.dev" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.18.0" mime: dependency: transitive description: @@ -1286,10 +1286,10 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.11" timezone: dependency: transitive description: @@ -1483,5 +1483,5 @@ packages: source: hosted version: "6.5.0" sdks: - dart: ">=3.8.0-0 <4.0.0" + dart: ">=3.10.0-0 <4.0.0" flutter: ">=3.24.0"