Localization

localization_aamir
Aamir.Muhammad 2 years ago
parent 4abcd4efe3
commit 2e9d665aaf

@ -438,7 +438,47 @@
"availableSlots": "المواعيد المتاحة", "availableSlots": "المواعيد المتاحة",
"bookAndPay": "الحجز والدفع", "bookAndPay": "الحجز والدفع",
"reservationAmounts": "مبالغ الحجز", "reservationAmounts": "مبالغ الحجز",
"tax": "الضريبة" "tax": "الضريبة",
"adsFilter": "تصفية الإعلانات",
"searchByCity": "البحث حسب المدينة",
"selectCity": "اختر المدينة",
"searchByBrandName": "البحث حسب اسم العلامة التجارية",
"selectVehicleBrand": "اختر علامة تجارية للسيارة",
"searchByVehicleYear": "البحث حسب سنة السيارة",
"selectYear": "اختر السنة",
"searchByAdOwner": "البحث حسب مالك الإعلان",
"selectOwner": "اختر المالك",
"search": "بحث",
"clearFilters": "مسح التصفية",
"book": "حجز",
"markAsSold": "وضع علامة تم البيع",
"deactivateAd": "إلغاء تفعيل الإعلان",
"doWantDeactivateAd": "هل تريد إلغاء تفعيل هذا الإعلان؟",
"stoptheBuyers": "سنتوقف عن عرض هذا الإعلان للمشترين",
"cancelReservation": "إلغاء الحجز",
"reasonForCancellation": "سبب الإلغاء",
"doWantCancelReservation?": "هل تريد إلغاء الحجز؟",
"yourAdVisibletoBuy": "سيتم إلغاء حجز إعلانك وسيكون هذا الإعلان مرئيًا للجميع مرة أخرى للشراء",
"completeDeal": "إتمام الصفقة",
"uploadBankReceipt": "تحميل إيصال البنك",
"notesForAdmin": "ملاحظات للإدارة",
"extendAd": "تمديد الإعلان",
"updateAdDetails": "هل تريد تحديث تفاصيل الإعلان",
"durationExtendingAd": "يمكنك تغيير مدة الإعلان والتفاصيل قبل تمديد الإعلان",
"waitingAdminsResponse": "في انتظار رد الإدارة",
"cancelledByOwner": "ألغيت من قبل المالك",
"cancelledByAdmin": "ألغيت من قبل الإدارة",
"reservationTimeOver": "انتهى وقت الحجز",
"paymentVerified": "تم التحقق من الدفع",
"rejectedFormAdmin": "تم الرفض من قبل الإدارة",
"waitingAdminPost": "في انتظار الإدارة للنشر",
"waitingAdminsApproval": "في انتظار موافقة الإدارة",
"sold": "تم البيع",
"noAdsShow": "لا توجد إعلانات لعرضها",
"damagePartList": "قائمة الأجزاء المتضررة"
} }

@ -439,7 +439,46 @@
"availableSlots":"Available Slots", "availableSlots":"Available Slots",
"bookAndPay":"Book and Pay", "bookAndPay":"Book and Pay",
"reservationAmounts":"Reservation Amounts", "reservationAmounts":"Reservation Amounts",
"tax":"Tax" "tax":"Tax",
"adsFilter": "Ads Filter",
"searchByCity":"Search By City",
"selectCity":"Select City",
"searchByBrandName":"Search By Brand Name",
"selectVehicleBrand":"Select Vehicle Brand",
"searchByVehicleYear":"Search By Vehicle Year",
"selectYear":"Select Year",
"searchByAdOwner":"Search By Ad Owner",
"selectOwner":"Select Owner",
"search":"Search",
"clearFilters":"Clear Filters",
"book":"Book",
"markAsSold":"Mark As Sold",
"deactivateAd":"Deactivate Ad",
"doWantDeactivateAd":"Do you want to the Deactivate this Ad?",
"stoptheBuyers":"We will stop showing this ad to the buyers",
"cancelReservation":"Cancel Reservation",
"reasonForCancellation":"Reason for Cancellation",
"doWantCancelReservation?":"Do you want to cancel the reservation",
"yourAdVisibletoBuy.":"Your ad reservation will be cancelled and this ad will be again visible to everyone to buy",
"completeDeal":"Complete Deal",
"uploadBankReceipt":"Upload Bank Receipt",
"notesForAdmin":"Notes For Admin",
"extendAd":"Extend Ad",
"updateAdDetails":"Do you want to update the Ad Details",
"durationExtendingAd":"You can change the ad duration and details before extending the ad",
"waitingAdminsResponse":"Waiting for Admins Response",
"cancelledByOwner":"Cancelled by Owner",
"cancelledByAdmin":"Cancelled by Admin",
"reservationTimeOver":"Reservation Time Over",
"paymentVerified":"Payment Verified",
"rejectedFormAdmin":"Rejected form Admin",
"waitingAdminPost":"Waiting for admin to post",
"waitingAdminsApproval":"Waiting for Admins Approval",
"sold":"Sold",
"noAdsShow":"No Ads to show",
"damagePartList":"Damage Part List"

@ -454,7 +454,44 @@ class CodegenLoader extends AssetLoader{
"availableSlots": "المواعيد المتاحة", "availableSlots": "المواعيد المتاحة",
"bookAndPay": "الحجز والدفع", "bookAndPay": "الحجز والدفع",
"reservationAmounts": "مبالغ الحجز", "reservationAmounts": "مبالغ الحجز",
"tax": "الضريبة" "tax": "الضريبة",
"adsFilter": "تصفية الإعلانات",
"searchByCity": "البحث حسب المدينة",
"selectCity": "اختر المدينة",
"searchByBrandName": "البحث حسب اسم العلامة التجارية",
"selectVehicleBrand": "اختر علامة تجارية للسيارة",
"searchByVehicleYear": "البحث حسب سنة السيارة",
"selectYear": "اختر السنة",
"searchByAdOwner": "البحث حسب مالك الإعلان",
"selectOwner": "اختر المالك",
"search": "بحث",
"clearFilters": "مسح التصفية",
"book": "حجز",
"markAsSold": "وضع علامة تم البيع",
"deactivateAd": "إلغاء تفعيل الإعلان",
"doWantDeactivateAd": "هل تريد إلغاء تفعيل هذا الإعلان؟",
"stoptheBuyers": "سنتوقف عن عرض هذا الإعلان للمشترين",
"cancelReservation": "إلغاء الحجز",
"reasonForCancellation": "سبب الإلغاء",
"doWantCancelReservation?": "هل تريد إلغاء الحجز؟",
"yourAdVisibletoBuy": "سيتم إلغاء حجز إعلانك وسيكون هذا الإعلان مرئيًا للجميع مرة أخرى للشراء",
"completeDeal": "إتمام الصفقة",
"uploadBankReceipt": "تحميل إيصال البنك",
"notesForAdmin": "ملاحظات للإدارة",
"extendAd": "تمديد الإعلان",
"updateAdDetails": "هل تريد تحديث تفاصيل الإعلان",
"durationExtendingAd": "يمكنك تغيير مدة الإعلان والتفاصيل قبل تمديد الإعلان",
"waitingAdminsResponse": "في انتظار رد الإدارة",
"cancelledByOwner": "ألغيت من قبل المالك",
"cancelledByAdmin": "ألغيت من قبل الإدارة",
"reservationTimeOver": "انتهى وقت الحجز",
"paymentVerified": "تم التحقق من الدفع",
"rejectedFormAdmin": "تم الرفض من قبل الإدارة",
"waitingAdminPost": "في انتظار الإدارة للنشر",
"waitingAdminsApproval": "في انتظار موافقة الإدارة",
"sold": "تم البيع",
"noAdsShow": "لا توجد إعلانات لعرضها",
"damagePartList": "قائمة الأجزاء المتضررة"
}; };
static const Map<String,dynamic> en_US = { static const Map<String,dynamic> en_US = {
"firstTimeLogIn": "First Time Log In", "firstTimeLogIn": "First Time Log In",
@ -897,7 +934,44 @@ static const Map<String,dynamic> en_US = {
"availableSlots": "Available Slots", "availableSlots": "Available Slots",
"bookAndPay": "Book and Pay", "bookAndPay": "Book and Pay",
"reservationAmounts": "Reservation Amounts", "reservationAmounts": "Reservation Amounts",
"tax": "Tax" "tax": "Tax",
"adsFilter": "Ads Filter",
"searchByCity": "Search By City",
"selectCity": "Select City",
"searchByBrandName": "Search By Brand Name",
"selectVehicleBrand": "Select Vehicle Brand",
"searchByVehicleYear": "Search By Vehicle Year",
"selectYear": "Select Year",
"searchByAdOwner": "Search By Ad Owner",
"selectOwner": "Select Owner",
"search": "Search",
"clearFilters": "Clear Filters",
"book": "Book",
"markAsSold": "Mark As Sold",
"deactivateAd": "Deactivate Ad",
"doWantDeactivateAd": "Do you want to the Deactivate this Ad?",
"stoptheBuyers": "We will stop showing this ad to the buyers",
"cancelReservation": "Cancel Reservation",
"reasonForCancellation": "Reason for Cancellation",
"doWantCancelReservation?": "Do you want to cancel the reservation",
"yourAdVisibletoBuy.": "Your ad reservation will be cancelled and this ad will be again visible to everyone to buy",
"completeDeal": "Complete Deal",
"uploadBankReceipt": "Upload Bank Receipt",
"notesForAdmin": "Notes For Admin",
"extendAd": "Extend Ad",
"updateAdDetails": "Do you want to update the Ad Details",
"durationExtendingAd": "You can change the ad duration and details before extending the ad",
"waitingAdminsResponse": "Waiting for Admins Response",
"cancelledByOwner": "Cancelled by Owner",
"cancelledByAdmin": "Cancelled by Admin",
"reservationTimeOver": "Reservation Time Over",
"paymentVerified": "Payment Verified",
"rejectedFormAdmin": "Rejected form Admin",
"waitingAdminPost": "Waiting for admin to post",
"waitingAdminsApproval": "Waiting for Admins Approval",
"sold": "Sold",
"noAdsShow": "No Ads to show",
"damagePartList": "Damage Part List"
}; };
static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
} }

@ -418,5 +418,42 @@ abstract class LocaleKeys {
static const bookAndPay = 'bookAndPay'; static const bookAndPay = 'bookAndPay';
static const reservationAmounts = 'reservationAmounts'; static const reservationAmounts = 'reservationAmounts';
static const tax = 'tax'; static const tax = 'tax';
static const adsFilter = 'adsFilter';
static const searchByCity = 'searchByCity';
static const selectCity = 'selectCity';
static const searchByBrandName = 'searchByBrandName';
static const selectVehicleBrand = 'selectVehicleBrand';
static const searchByVehicleYear = 'searchByVehicleYear';
static const selectYear = 'selectYear';
static const searchByAdOwner = 'searchByAdOwner';
static const selectOwner = 'selectOwner';
static const search = 'search';
static const clearFilters = 'clearFilters';
static const book = 'book';
static const markAsSold = 'markAsSold';
static const deactivateAd = 'deactivateAd';
static const doWantDeactivateAd = 'doWantDeactivateAd';
static const stoptheBuyers = 'stoptheBuyers';
static const cancelReservation = 'cancelReservation';
static const reasonForCancellation = 'reasonForCancellation';
static const doWantCancelReservation? = 'doWantCancelReservation?';
static const yourAdVisibletoBuy = 'yourAdVisibletoBuy';
static const completeDeal = 'completeDeal';
static const uploadBankReceipt = 'uploadBankReceipt';
static const notesForAdmin = 'notesForAdmin';
static const extendAd = 'extendAd';
static const updateAdDetails = 'updateAdDetails';
static const durationExtendingAd = 'durationExtendingAd';
static const waitingAdminsResponse = 'waitingAdminsResponse';
static const cancelledByOwner = 'cancelledByOwner';
static const cancelledByAdmin = 'cancelledByAdmin';
static const reservationTimeOver = 'reservationTimeOver';
static const paymentVerified = 'paymentVerified';
static const rejectedFormAdmin = 'rejectedFormAdmin';
static const waitingAdminPost = 'waitingAdminPost';
static const waitingAdminsApproval = 'waitingAdminsApproval';
static const sold = 'sold';
static const noAdsShow = 'noAdsShow';
static const damagePartList = 'damagePartList';
} }

@ -247,7 +247,7 @@ class _AdsDetailViewState extends State<AdsDetailView> {
), ),
Row( Row(
children: [ children: [
(LocaleKeys.iban.tr()+": ").toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor), (LocaleKeys.iban.tr() + ": ").toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor),
(adVM.adsBankDetailsModel!.iban ?? "").toText( (adVM.adsBankDetailsModel!.iban ?? "").toText(
fontSize: 14, fontSize: 14,
isBold: true, isBold: true,
@ -714,44 +714,44 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
], ],
), ),
const Divider(), const Divider(),
"Special Services".toText(fontSize: 16, isBold: true), LocaleKeys.specialService.tr().toText(fontSize: 16, isBold: true),
5.height, 5.height,
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"Car insurance Service".toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor, fontWeight: FontWeight.w500), LocaleKeys.carInsuranceService.tr().toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor, fontWeight: FontWeight.w500),
"To be Decided".toText(fontSize: 12, isBold: true), LocaleKeys.toBeDecided.tr().toText(fontSize: 12, isBold: true),
], ],
), ),
5.height, 5.height,
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"Registration & Car Plates".toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor), LocaleKeys.registrationCarPlates.tr().toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor),
"To be Decided".toText(fontSize: 12, isBold: true), LocaleKeys.toBeDecided.tr().toText(fontSize: 12, isBold: true),
], ],
), ),
5.height, 5.height,
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"Home Delivery Service".toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor), LocaleKeys.homeDeliveryService.tr().toText(fontSize: 14, isBold: true, color: MyColors.lightTextColor),
"To be Decided".toText(fontSize: 12, isBold: true), LocaleKeys.toBeDecided.tr().toText(fontSize: 12, isBold: true),
], ],
), ),
12.height, 12.height,
"Special service charges will be added based on desired insurance and delivery Location".toText(fontSize: 12), LocaleKeys.specialServicechargesInsuranceDeliveryLocation.tr().toText(fontSize: 12),
30.height, 30.height,
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
"Total Amount ".toText(fontSize: 16, isBold: true), LocaleKeys.totalAmount.tr().toText(fontSize: 16, isBold: true),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
"34,500".toText(fontSize: 19, isBold: true), "34,500".toText(fontSize: 19, isBold: true),
2.width, 2.width,
"SAR".toText(color: MyColors.lightTextColor, fontSize: 10, isBold: true).paddingOnly(bottom: 3), LocaleKeys.sar.tr().toText(color: MyColors.lightTextColor, fontSize: 10, isBold: true).paddingOnly(bottom: 3),
], ],
) )
], ],
@ -760,7 +760,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
"Estimated".toText(fontSize: 10, isBold: true), LocaleKeys.estimated.tr().toText(fontSize: 10, isBold: true),
], ],
), ),
44.height, 44.height,
@ -773,7 +773,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
size: 19, size: 19,
).paddingOnly(bottom: 2), ).paddingOnly(bottom: 2),
3.width, 3.width,
"Some services are mandatory while reserving the Ad.".toText( LocaleKeys.servicesReservingAd.tr().toText(
color: MyColors.adPendingStatusColor, color: MyColors.adPendingStatusColor,
fontSize: 12, fontSize: 12,
isItalic: true, isItalic: true,
@ -786,7 +786,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
Expanded( Expanded(
child: ShowFillButton( child: ShowFillButton(
maxHeight: 55, maxHeight: 55,
title: "Complete Reservation", title: LocaleKeys.completeReservation.tr(),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
navigateWithName(context, AppRoutes.paymentMethodsView); navigateWithName(context, AppRoutes.paymentMethodsView);
@ -842,7 +842,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
isFilled: false, isFilled: false,
borderColor: MyColors.darkPrimaryColor, borderColor: MyColors.darkPrimaryColor,
maxHeight: 55, maxHeight: 55,
title: "Book ${photoSpecialServiceModel.name}", title: (LocaleKeys.book.tr() + " ${photoSpecialServiceModel.name}"),
txtColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor,
onPressed: () { onPressed: () {
onBookPhotographyServiceClicked(context, adDetailsModel: adDetailsModel); onBookPhotographyServiceClicked(context, adDetailsModel: adDetailsModel);
@ -861,7 +861,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
backgroundColor: payButtonStatus ? MyColors.grey98Color.withOpacity(0.3) : MyColors.darkPrimaryColor, backgroundColor: payButtonStatus ? MyColors.grey98Color.withOpacity(0.3) : MyColors.darkPrimaryColor,
txtColor: payButtonStatus ? MyColors.lightTextColor : MyColors.white, txtColor: payButtonStatus ? MyColors.lightTextColor : MyColors.white,
isBold: false, isBold: false,
title: "Pay Now", title: LocaleKeys.payNow.tr(),
onPressed: () { onPressed: () {
if (photoSpecialServiceModel == null) { if (photoSpecialServiceModel == null) {
navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.ads); navigateWithName(context, AppRoutes.paymentMethodsView, arguments: PaymentTypes.ads);
@ -885,7 +885,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
Expanded( Expanded(
child: ShowFillButton( child: ShowFillButton(
maxHeight: 55, maxHeight: 55,
title: "Mark As Sold", title: LocaleKeys.markAsSold.tr(),
isBold: false, isBold: false,
onPressed: () { onPressed: () {
adVM.markAdAsSold(context, adId: adDetailsModel.id!); adVM.markAdAsSold(context, adId: adDetailsModel.id!);
@ -902,17 +902,17 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
isFilled: false, isFilled: false,
borderColor: MyColors.redColor, borderColor: MyColors.redColor,
maxHeight: 55, maxHeight: 55,
title: "Deactivate Ad", title: LocaleKeys.deactivateAd.tr(),
txtColor: MyColors.redColor, txtColor: MyColors.redColor,
onPressed: () { onPressed: () {
return actionConfirmationBottomSheet( return actionConfirmationBottomSheet(
context: context, context: context,
title: "Do you want to the Deactivate this Ad?".toText(fontSize: 28, isBold: true, letterSpacing: -1.44), title: LocaleKeys.doWantDeactivateAd.tr().toText(fontSize: 28, isBold: true, letterSpacing: -1.44),
subtitle: "We will stop showing this ad to the buyers.", subtitle: LocaleKeys.stoptheBuyers.tr(),
actionButtonYes: Expanded( actionButtonYes: Expanded(
child: ShowFillButton( child: ShowFillButton(
maxHeight: 55, maxHeight: 55,
title: "Yes", title: LocaleKeys.yes.tr(),
fontSize: 15, fontSize: 15,
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
@ -925,7 +925,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
maxHeight: 55, maxHeight: 55,
isFilled: false, isFilled: false,
borderColor: MyColors.darkPrimaryColor, borderColor: MyColors.darkPrimaryColor,
title: "No", title: LocaleKeys.no.tr(),
txtColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor,
fontSize: 15, fontSize: 15,
onPressed: () { onPressed: () {
@ -950,7 +950,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
enableDrag: true, enableDrag: true,
builder: (BuildContext context) { builder: (BuildContext context) {
return InfoBottomSheet( return InfoBottomSheet(
title: "Cancel Reservation".toText(fontSize: 28, isBold: true, letterSpacing: -1.44), title: LocaleKeys.cancelReservation.tr().toText(fontSize: 28, isBold: true, letterSpacing: -1.44),
description: Padding( description: Padding(
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: Consumer<AdVM>( child: Consumer<AdVM>(
@ -967,26 +967,26 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
value: adVM.reservationCancelReason, value: adVM.reservationCancelReason,
errorValue: adVM.reservationCancelError, errorValue: adVM.reservationCancelError,
keyboardType: TextInputType.text, keyboardType: TextInputType.text,
hint: "Reason for cancellation", hint: LocaleKeys.reasonForCancellation.tr(),
onChanged: (v) => adVM.updateReservationCancelReason(v), onChanged: (v) => adVM.updateReservationCancelReason(v),
), ),
], ],
), ),
25.height, 25.height,
ShowFillButton( ShowFillButton(
title: "Submit", title: LocaleKeys.submit.tr(),
onPressed: () { onPressed: () {
bool status = adVM.validateReservationCancelReason(); bool status = adVM.validateReservationCancelReason();
if (status) { if (status) {
Navigator.pop(context); Navigator.pop(context);
return actionConfirmationBottomSheet( return actionConfirmationBottomSheet(
context: context, context: context,
title: "Do you want to cancel the reservation?".toText(fontSize: 28, isBold: true, letterSpacing: -1.44), title: LocaleKeys.doWantCancelReservation.tr().toText(fontSize: 28, isBold: true, letterSpacing: -1.44),
subtitle: "Your ad reservation will be cancelled and this ad will be again visible to everyone to buy.", subtitle: LocaleKeys.yourAdVisibletoBuy.tr(),
actionButtonYes: Expanded( actionButtonYes: Expanded(
child: ShowFillButton( child: ShowFillButton(
maxHeight: 55, maxHeight: 55,
title: "Yes", title: LocaleKeys.yes.tr(),
fontSize: 15, fontSize: 15,
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
@ -999,7 +999,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
maxHeight: 55, maxHeight: 55,
isFilled: false, isFilled: false,
borderColor: MyColors.darkPrimaryColor, borderColor: MyColors.darkPrimaryColor,
title: "No", title: LocaleKeys.no.tr(),
txtColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor,
fontSize: 15, fontSize: 15,
onPressed: () { onPressed: () {
@ -1032,7 +1032,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
isFilled: false, isFilled: false,
fontSize: 16, fontSize: 16,
maxHeight: 55, maxHeight: 55,
title: "Cancel Reservation", title: LocaleKeys.cancelReservation.tr(),
onPressed: () { onPressed: () {
buildCancelReservationBottomSheet(context, adDetails: adDetails); buildCancelReservationBottomSheet(context, adDetails: adDetails);
}), }),
@ -1050,7 +1050,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
backgroundColor: MyColors.darkPrimaryColor, backgroundColor: MyColors.darkPrimaryColor,
txtColor: MyColors.white, txtColor: MyColors.white,
isBold: false, isBold: false,
title: "Complete Deal", title: LocaleKeys.completeDeal.tr(),
onPressed: () { onPressed: () {
buildCompleteDealBottomSheet(context, adDetails: adDetails); buildCompleteDealBottomSheet(context, adDetails: adDetails);
}), }),
@ -1066,7 +1066,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
enableDrag: true, enableDrag: true,
builder: (BuildContext context) { builder: (BuildContext context) {
return InfoBottomSheet( return InfoBottomSheet(
title: "Upload Bank Receipt".toText(fontSize: 26, isBold: true, letterSpacing: -1.44), title: LocaleKeys.uploadBankReceipt.tr().toText(fontSize: 26, isBold: true, letterSpacing: -1.44),
description: Padding( description: Padding(
padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: Consumer<AdVM>( child: Consumer<AdVM>(
@ -1083,13 +1083,13 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
value: adVM.completeDealNotesForAdmin, value: adVM.completeDealNotesForAdmin,
errorValue: "", errorValue: "",
keyboardType: TextInputType.text, keyboardType: TextInputType.text,
hint: "Notes For Admin", hint: LocaleKeys.notesForAdmin.tr(),
onChanged: (v) => adVM.updateCompleteDealNotesForAdmin(v), onChanged: (v) => adVM.updateCompleteDealNotesForAdmin(v),
), ),
], ],
), ),
15.height, 15.height,
"Attach File".toText(fontSize: 20, isBold: true, letterSpacing: -0.5), LocaleKeys.attachFile.tr().toText(fontSize: 20, isBold: true, letterSpacing: -0.5),
if (adVM.pickedReceiptPdfFiles.isNotEmpty) ...[ if (adVM.pickedReceiptPdfFiles.isNotEmpty) ...[
16.height, 16.height,
PickedFilesContainer( PickedFilesContainer(
@ -1123,7 +1123,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
], ],
15.height, 15.height,
ShowFillButton( ShowFillButton(
title: "Submit", title: LocaleKeys.submit.tr(),
onPressed: () { onPressed: () {
//Upload Attachment //Upload Attachment
}, },
@ -1146,17 +1146,17 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
child: ShowFillButton( child: ShowFillButton(
fontSize: 16, fontSize: 16,
maxHeight: 55, maxHeight: 55,
title: "Extend Ad", title: LocaleKeys.extendAd.tr(),
onPressed: () { onPressed: () {
final AdVM adVM = context.read<AdVM>(); final AdVM adVM = context.read<AdVM>();
return actionConfirmationBottomSheet( return actionConfirmationBottomSheet(
context: context, context: context,
title: "Do you want to update the Ad Details?".toText(fontSize: 28, isBold: true, letterSpacing: -1.44), title: LocaleKeys.updateAdDetails.tr().toText(fontSize: 28, isBold: true, letterSpacing: -1.44),
subtitle: "You can change the ad duration and details before extending the ad.", subtitle: LocaleKeys.durationExtendingAd.tr(),
actionButtonYes: Expanded( actionButtonYes: Expanded(
child: ShowFillButton( child: ShowFillButton(
maxHeight: 55, maxHeight: 55,
title: "Yes", title: LocaleKeys.yes.tr(),
fontSize: 15, fontSize: 15,
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
@ -1172,7 +1172,7 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
maxHeight: 55, maxHeight: 55,
isFilled: false, isFilled: false,
borderColor: MyColors.darkPrimaryColor, borderColor: MyColors.darkPrimaryColor,
title: "No", title: LocaleKeys.no.tr(),
txtColor: MyColors.darkPrimaryColor, txtColor: MyColors.darkPrimaryColor,
fontSize: 15, fontSize: 15,
onPressed: () { onPressed: () {
@ -1195,31 +1195,31 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
Widget reservedAdActions(context, {required AdDetailsModel adDetailsModel, required AdVM adVM}) { Widget reservedAdActions(context, {required AdDetailsModel adDetailsModel, required AdVM adVM}) {
switch (adDetailsModel.adReserveStatus) { switch (adDetailsModel.adReserveStatus) {
case AdReserveStatus.defaultStatus: case AdReserveStatus.defaultStatus:
return pendingForReviewAction(pendingText: "Waiting for Admins Response"); return pendingForReviewAction(pendingText: LocaleKeys.waitingAdminsResponse.tr());
case AdReserveStatus.reserved: case AdReserveStatus.reserved:
return cancelReservationAction(context, adDetails: adDetailsModel); return cancelReservationAction(context, adDetails: adDetailsModel);
case AdReserveStatus.cancelledByOwner: case AdReserveStatus.cancelledByOwner:
return pendingForReviewAction(pendingText: "Cancelled by Owner"); return pendingForReviewAction(pendingText: LocaleKeys.cancelledByOwner.tr());
case AdReserveStatus.cancelledByAdmin: case AdReserveStatus.cancelledByAdmin:
return pendingForReviewAction(pendingText: "Cancelled by Admin"); return pendingForReviewAction(pendingText: LocaleKeys.cancelledByAdmin.tr());
case AdReserveStatus.timeOver: case AdReserveStatus.timeOver:
return pendingForReviewAction(pendingText: "Reservation Time Over"); return pendingForReviewAction(pendingText: LocaleKeys.reservationTimeOver.tr());
case AdReserveStatus.dealDone: case AdReserveStatus.dealDone:
if (adVM.adsBankDetailsModel != null) { if (adVM.adsBankDetailsModel != null) {
return completeDealAction(context, adDetails: adDetailsModel); return completeDealAction(context, adDetails: adDetailsModel);
} }
return pendingForReviewAction(pendingText: "Waiting for Admins Response"); return pendingForReviewAction(pendingText: LocaleKeys.waitingAdminsResponse.tr());
case AdReserveStatus.fullPaymentVerified: case AdReserveStatus.fullPaymentVerified:
return pendingForReviewAction(pendingText: "Payment Verified"); return pendingForReviewAction(pendingText: LocaleKeys.paymentVerified.tr());
default: default:
return pendingForReviewAction(pendingText: "Waiting for Admins Response"); return pendingForReviewAction(pendingText: LocaleKeys.waitingAdminsResponse.tr());
} }
} }
@ -1240,16 +1240,16 @@ class BuildAdDetailsActionButtonForMyAds extends StatelessWidget {
case AdPostStatus.buyingService: case AdPostStatus.buyingService:
case AdPostStatus.reserveCancel: case AdPostStatus.reserveCancel:
case AdPostStatus.rejected: case AdPostStatus.rejected:
return pendingForReviewAction(pendingText: "Rejected form admin"); return pendingForReviewAction(pendingText: LocaleKeys.rejectedFormAdmin.tr());
case AdPostStatus.cancelled: case AdPostStatus.cancelled:
case AdPostStatus.pendingForPost: case AdPostStatus.pendingForPost:
return pendingForReviewAction(pendingText: "Waiting for admin to post"); return pendingForReviewAction(pendingText: LocaleKeys.waitingAdminPost.tr());
case AdPostStatus.pendingForReview: case AdPostStatus.pendingForReview:
return pendingForReviewAction(pendingText: "Waiting for Admins Approval"); return pendingForReviewAction(pendingText: LocaleKeys.waitingAdminsApproval.tr());
case AdPostStatus.sold: case AdPostStatus.sold:
return pendingForReviewAction(pendingText: "Sold"); return pendingForReviewAction(pendingText: LocaleKeys.sold.tr());
case AdPostStatus.expired: case AdPostStatus.expired:
return expiredAdAction(context); return expiredAdAction(context);

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/consts.dart'; import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart'; import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart';
@ -11,6 +12,7 @@ import 'package:mc_common_app/widgets/common_widgets/search_entity_widget.dart';
import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart'; import 'package:mc_common_app/widgets/dropdown/dropdow_field.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class AdsFilterView extends StatelessWidget { class AdsFilterView extends StatelessWidget {
const AdsFilterView({super.key}); const AdsFilterView({super.key});
@ -19,7 +21,7 @@ class AdsFilterView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: CustomAppBar( appBar: CustomAppBar(
title: "Ads Filter", title: LocaleKeys.adsFilter.tr(),
profileImageUrl: MyAssets.bnCar, profileImageUrl: MyAssets.bnCar,
isRemoveBackButton: false, isRemoveBackButton: false,
isDrawerEnabled: false, isDrawerEnabled: false,
@ -41,7 +43,7 @@ class AdsFilterView extends StatelessWidget {
children: [ children: [
20.height, 20.height,
SearchEntityWidget( SearchEntityWidget(
title: "Search By City", title: LocaleKeys.searchByCity.tr(),
actionWidget: Builder(builder: (context) { actionWidget: Builder(builder: (context) {
List<DropValue> vehicleBrandsDrop = []; List<DropValue> vehicleBrandsDrop = [];
for (var element in adVM.vehicleCities) { for (var element in adVM.vehicleCities) {
@ -51,7 +53,7 @@ class AdsFilterView extends StatelessWidget {
(DropValue value) => adVM.updateSelectionVehicleCityId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true), (DropValue value) => adVM.updateSelectionVehicleCityId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true),
list: vehicleBrandsDrop, list: vehicleBrandsDrop,
dropdownValue: adVM.vehicleCityId.selectedId != -1 ? DropValue(adVM.vehicleCityId.selectedId, adVM.vehicleCityId.selectedOption, "") : null, dropdownValue: adVM.vehicleCityId.selectedId != -1 ? DropValue(adVM.vehicleCityId.selectedId, adVM.vehicleCityId.selectedOption, "") : null,
hint: "Select City", hint: LocaleKeys.selectCity.tr(),
errorValue: adVM.vehicleCityId.errorValue, errorValue: adVM.vehicleCityId.errorValue,
); );
}), }),
@ -61,7 +63,7 @@ class AdsFilterView extends StatelessWidget {
), ),
const Divider(thickness: 1.2).paddingOnly(top: 7, bottom: 7), const Divider(thickness: 1.2).paddingOnly(top: 7, bottom: 7),
SearchEntityWidget( SearchEntityWidget(
title: "Search By Brand Name", title: LocaleKeys.searchByBrandName.tr(),
actionWidget: Builder(builder: (context) { actionWidget: Builder(builder: (context) {
List<DropValue> vehicleBrandsDrop = []; List<DropValue> vehicleBrandsDrop = [];
for (var element in adVM.vehicleBrands) { for (var element in adVM.vehicleBrands) {
@ -71,7 +73,7 @@ class AdsFilterView extends StatelessWidget {
(DropValue value) => adVM.updateSelectionVehicleBrandId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true), (DropValue value) => adVM.updateSelectionVehicleBrandId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true),
list: vehicleBrandsDrop, list: vehicleBrandsDrop,
dropdownValue: adVM.vehicleBrandId.selectedId != -1 ? DropValue(adVM.vehicleBrandId.selectedId, adVM.vehicleBrandId.selectedOption, "") : null, dropdownValue: adVM.vehicleBrandId.selectedId != -1 ? DropValue(adVM.vehicleBrandId.selectedId, adVM.vehicleBrandId.selectedOption, "") : null,
hint: "Select Vehicle Brand", hint: LocaleKeys.selectVehicleBrand.tr(),
errorValue: adVM.vehicleBrandId.errorValue, errorValue: adVM.vehicleBrandId.errorValue,
); );
}), }),
@ -81,7 +83,7 @@ class AdsFilterView extends StatelessWidget {
), ),
const Divider(thickness: 1.2).paddingOnly(top: 7, bottom: 7), const Divider(thickness: 1.2).paddingOnly(top: 7, bottom: 7),
SearchEntityWidget( SearchEntityWidget(
title: "Search By Vehicle Year", title: LocaleKeys.searchByVehicleYear.tr(),
actionWidget: Builder(builder: (context) { actionWidget: Builder(builder: (context) {
List<DropValue> vehicleBrandsDrop = []; List<DropValue> vehicleBrandsDrop = [];
for (var element in adVM.vehicleModelYears) { for (var element in adVM.vehicleModelYears) {
@ -91,7 +93,7 @@ class AdsFilterView extends StatelessWidget {
(DropValue value) => adVM.updateSelectionVehicleModelYearId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true), (DropValue value) => adVM.updateSelectionVehicleModelYearId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true),
list: vehicleBrandsDrop, list: vehicleBrandsDrop,
dropdownValue: adVM.vehicleModelYearId.selectedId != -1 ? DropValue(adVM.vehicleModelYearId.selectedId, adVM.vehicleModelYearId.selectedOption, "") : null, dropdownValue: adVM.vehicleModelYearId.selectedId != -1 ? DropValue(adVM.vehicleModelYearId.selectedId, adVM.vehicleModelYearId.selectedOption, "") : null,
hint: "Select Year", hint: LocaleKeys.selectYear.tr(),
errorValue: adVM.vehicleModelYearId.errorValue, errorValue: adVM.vehicleModelYearId.errorValue,
); );
}), }),
@ -101,7 +103,7 @@ class AdsFilterView extends StatelessWidget {
), ),
const Divider(thickness: 1.2).paddingOnly(top: 7, bottom: 7), const Divider(thickness: 1.2).paddingOnly(top: 7, bottom: 7),
SearchEntityWidget( SearchEntityWidget(
title: "Search By Ad Owner", title: LocaleKeys.searchByAdOwner.tr(),
actionWidget: Builder(builder: (context) { actionWidget: Builder(builder: (context) {
List<DropValue> vehicleOwnerDrop = []; List<DropValue> vehicleOwnerDrop = [];
for (var element in adVM.exploreAdsEnums) { for (var element in adVM.exploreAdsEnums) {
@ -111,7 +113,7 @@ class AdsFilterView extends StatelessWidget {
(DropValue value) => adVM.updateSelectionVehicleAdOwnerId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true), (DropValue value) => adVM.updateSelectionVehicleAdOwnerId(SelectionModel(selectedId: value.id, selectedOption: value.value), isForSearch: true),
list: vehicleOwnerDrop, list: vehicleOwnerDrop,
dropdownValue: adVM.vehicleOwnerId.selectedId != -1 ? DropValue(adVM.vehicleOwnerId.selectedId, adVM.vehicleOwnerId.selectedOption, "") : null, dropdownValue: adVM.vehicleOwnerId.selectedId != -1 ? DropValue(adVM.vehicleOwnerId.selectedId, adVM.vehicleOwnerId.selectedOption, "") : null,
hint: "Select Owner", hint: LocaleKeys.selectOwner.tr(),
errorValue: adVM.vehicleOwnerId.errorValue, errorValue: adVM.vehicleOwnerId.errorValue,
); );
}), }),
@ -131,7 +133,7 @@ class AdsFilterView extends StatelessWidget {
Expanded( Expanded(
child: ShowFillButton( child: ShowFillButton(
maxHeight: 55, maxHeight: 55,
title: "Search", title: LocaleKeys.search.tr(),
onPressed: () {}, onPressed: () {},
backgroundColor: MyColors.darkPrimaryColor, backgroundColor: MyColors.darkPrimaryColor,
txtColor: MyColors.white, txtColor: MyColors.white,
@ -143,7 +145,7 @@ class AdsFilterView extends StatelessWidget {
8.height, 8.height,
InkWell( InkWell(
onTap: () => adVM.clearAdsFilters(), onTap: () => adVM.clearAdsFilters(),
child: "Clear Filters".toText( child: LocaleKeys.clearFilters.tr().toText(
fontSize: 14, fontSize: 14,
isBold: true, isBold: true,
color: MyColors.darkPrimaryColor, color: MyColors.darkPrimaryColor,

@ -3,6 +3,7 @@ import 'package:mc_common_app/classes/consts.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart'; import 'package:mc_common_app/models/advertisment_models/ad_details_model.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/navigator.dart'; import 'package:mc_common_app/utils/navigator.dart';
@ -10,6 +11,8 @@ import 'package:mc_common_app/utils/utils.dart';
import 'package:mc_common_app/view_models/ad_view_model.dart'; import 'package:mc_common_app/view_models/ad_view_model.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart'; import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
class BuildAdsList extends StatelessWidget { class BuildAdsList extends StatelessWidget {
final List<AdDetailsModel> adsList; final List<AdDetailsModel> adsList;
@ -31,7 +34,7 @@ class BuildAdsList extends StatelessWidget {
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
"No Ads to show.".toText(fontSize: 16, color: MyColors.lightTextColor), LocaleKeys.noAdsShow.tr().toText(fontSize: 16, color: MyColors.lightTextColor),
], ],
); );
} }
@ -101,7 +104,7 @@ class AdCard extends StatelessWidget {
(adDetails.vehicle!.vehicleTitle ?? "").toText(fontSize: 16, isBold: true), (adDetails.vehicle!.vehicleTitle ?? "").toText(fontSize: 16, isBold: true),
Row( Row(
children: [ children: [
"Model:".toText( (LocaleKeys.model.tr() + ":").toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
), ),
2.width, 2.width,
@ -110,7 +113,7 @@ class AdCard extends StatelessWidget {
), ),
Row( Row(
children: [ children: [
"Mileage:".toText( (LocaleKeys.mileage.tr() + ":").toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
), ),
2.width, 2.width,
@ -146,7 +149,7 @@ class AdCard extends StatelessWidget {
children: [ children: [
(adDetails.vehicle!.demandAmount!.toInt().toString()).toText(fontSize: 16, isBold: true), (adDetails.vehicle!.demandAmount!.toInt().toString()).toText(fontSize: 16, isBold: true),
2.width, 2.width,
"SAR".toText( LocaleKeys.sar.tr().toText(
color: MyColors.lightTextColor, color: MyColors.lightTextColor,
), ),
], ],

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/extensions/int_extensions.dart'; import 'package:mc_common_app/extensions/int_extensions.dart';
import 'package:mc_common_app/extensions/string_extensions.dart'; import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart'; import 'package:mc_common_app/models/advertisment_models/vehicle_details_models.dart';
import 'package:mc_common_app/models/general_models/widgets_models.dart'; import 'package:mc_common_app/models/general_models/widgets_models.dart';
import 'package:mc_common_app/theme/colors.dart'; import 'package:mc_common_app/theme/colors.dart';
@ -12,6 +13,8 @@ import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/txt_field.dart'; import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart'; import 'package:sizer/sizer.dart';
import 'package:easy_localization/easy_localization.dart';
class BottomSheetListContent extends StatefulWidget { class BottomSheetListContent extends StatefulWidget {
const BottomSheetListContent({Key? key}) : super(key: key); const BottomSheetListContent({Key? key}) : super(key: key);
@ -40,7 +43,7 @@ class _BottomSheetListContentState extends State<BottomSheetListContent> {
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
"Damage Part List".toText(fontSize: 24, isBold: true), LocaleKeys.damagePartList.tr().toText(fontSize: 24, isBold: true),
], ],
), ),
8.height, 8.height,

Loading…
Cancel
Save