fixed Things before QA

aamir_dev
Faiz Hashmi 1 year ago
parent e7c6c044e0
commit 07a484ba39

@ -2,6 +2,8 @@ import 'dart:async';
import 'package:car_provider_app/views/dashboard/widget/general_appointment_widget.dart';
import 'package:car_provider_app/views/settings/schedule/widgets/chips_picker_item.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/widgets.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
import 'package:mc_common_app/view_models/service_view_model.dart';
@ -58,199 +60,211 @@ class _AddNewServiceAppointmentPageState extends State<AddNewServiceAppointmentP
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: MyColors.white,
appBar: CustomAppBar(
title: LocaleKeys.addService.tr(),
),
body: Padding(
padding: const EdgeInsets.all(21.0),
child: Column(
child: Stack(
fit: StackFit.expand,
children: [
GeneralAppointmentWidget(
appointmentListModel: widget.appointmentListModel,
isNeedTotalPayment: true,
isNeedToShowItems: true,
isNeedToShowToMoreText: false,
onTap: () {},
),
12.height,
Expanded(
child: Consumer<ServiceVM>(
builder: (context, model, _) {
return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
SingleChildScrollView(
child: Column(
children: [
GeneralAppointmentWidget(
appointmentListModel: widget.appointmentListModel,
isNeedTotalPayment: true,
isNeedToShowItems: true,
isNeedToShowToMoreText: false,
onTap: () {},
),
12.height,
Consumer<ServiceVM>(
builder: (context, model, _) {
return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
LocaleKeys.selectServicestoAdd.tr().toText(
fontSize: 18,
isBold: true,
),
12.height,
Column(
crossAxisAlignment: CrossAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
model.categoryDropList.isNotEmpty
? DropdownField(
(DropValue value) async {
category = value;
service = null;
model.fetchProviderServices(widget.appointmentListModel.branchId.toString(), value.id.toString());
},
dropdownValue: category,
list: model.categoryDropList,
hint: LocaleKeys.selectServiceCategory.tr(),
)
: const Center(
child: CircularProgressIndicator(),
),
LocaleKeys.selectServicestoAdd.tr().toText(
fontSize: 18,
isBold: true,
),
12.height,
model.servicesDropList.isNotEmpty
? DropdownField(
(DropValue value) {
service = value;
pickedItems = null;
model.setState(ViewState.idle);
showMyBottomSheet(
context,
child: SelectItemsSheet(
serviceId: service?.id ?? 0,
onSelectItems: (List<ItemData> selectedList) {
this.selectedList.clear();
this.selectedList = selectedList;
pickedItems = [];
for (var element in selectedList) {
pickedItems!.add(
PickerItem(id: element.id ?? 0, title: element.name ?? ""),
);
}
model.notifyListeners();
},
),
);
},
dropdownValue: service,
list: model.servicesDropList,
hint: LocaleKeys.defineServices.tr(),
)
: category == null
? Container()
: model.services != null && model.servicesDropList.isEmpty
? Text(LocaleKeys.noServiceFound.tr())
: const CircularProgressIndicator(),
12.height,
(service != null && pickedItems != null && pickedItems!.length > 0)
? ChipsPickerItem(
hint: LocaleKeys.selectItems.tr(),
itemsList: [...pickedItems ?? []],
onClick: () {
showMyBottomSheet(
context,
child: SelectItemsSheet(
serviceId: service?.id ?? 0,
list: pickedItems,
onSelectItems: (List<ItemData> selectedList) {
pickedItems = [];
for (var element in selectedList) {
pickedItems!.add(
PickerItem(id: element.id ?? 0, title: element.name ?? ""),
);
}
model.notifyListeners();
},
),
);
},
)
: service != null
? Text(LocaleKeys.noItemSelectedYet.tr())
: const SizedBox(),
if ((service != null && pickedItems != null && pickedItems!.length > 0))
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
16.height,
LocaleKeys.totalAdditionalAmount.tr().toText(
fontSize: 14,
isBold: true,
color: MyColors.lightTextColor,
Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
model.categoryDropList.isNotEmpty
? DropdownField(
(DropValue value) async {
category = value;
service = null;
model.fetchProviderServices(widget.appointmentListModel.branchId.toString(), value.id.toString());
},
dropdownValue: category,
list: model.categoryDropList,
hint: LocaleKeys.selectServiceCategory.tr(),
)
: const Center(
child: CircularProgressIndicator(),
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
12.height,
model.servicesDropList.isNotEmpty
? DropdownField(
(DropValue value) {
service = value;
pickedItems = null;
model.setState(ViewState.idle);
showMyBottomSheet(
context,
child: SelectItemsSheet(
serviceId: service?.id ?? 0,
onSelectItems: (List<ItemData> selectedList) {
this.selectedList.clear();
this.selectedList = selectedList;
pickedItems = [];
for (var element in selectedList) {
pickedItems!.add(
PickerItem(id: element.id ?? 0, title: element.name ?? ""),
);
}
model.notifyListeners();
},
),
);
},
dropdownValue: service,
list: model.servicesDropList,
hint: LocaleKeys.defineServices.tr(),
)
: category == null
? Container()
: model.services != null && model.servicesDropList.isEmpty
? Text(LocaleKeys.noServiceFound.tr())
: const CircularProgressIndicator(),
12.height,
(service != null && pickedItems != null && pickedItems!.isNotEmpty)
? ChipsPickerItem(
hint: LocaleKeys.selectItems.tr(),
itemsList: [...pickedItems ?? []],
onClick: () {
showMyBottomSheet(
context,
child: SelectItemsSheet(
serviceId: service?.id ?? 0,
list: pickedItems,
onSelectItems: (List<ItemData> selectedList) {
pickedItems = [];
for (var element in selectedList) {
pickedItems!.add(
PickerItem(id: element.id ?? 0, title: element.name ?? ""),
);
}
model.notifyListeners();
},
),
);
},
)
: service != null
? Text(LocaleKeys.noItemSelectedYet.tr())
: const SizedBox(),
if ((service != null && pickedItems != null && pickedItems!.isNotEmpty))
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
calculatePrice().toString().toText(
fontSize: 29,
isBold: true,
),
2.width,
LocaleKeys.sar
.tr()
.toText(
fontSize: 16,
16.height,
LocaleKeys.totalAdditionalAmount.tr().toText(
fontSize: 14,
isBold: true,
color: MyColors.lightTextColor,
)
.paddingOnly(bottom: 5),
),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
calculatePrice().toString().toText(
fontSize: 29,
isBold: true,
),
2.width,
LocaleKeys.sar
.tr()
.toText(
fontSize: 16,
isBold: true,
color: MyColors.lightTextColor,
)
.paddingOnly(bottom: 5),
],
),
],
),
],
),
],
),
],
),
).toWhiteContainer(width: double.infinity, allPading: 12),
],
).toWhiteContainer(width: double.infinity, allPading: 12),
Row(
children: [
Expanded(
child: ShowFillButton(
title: LocaleKeys.cancel.tr(),
maxWidth: double.infinity,
isFilled: false,
txtColor: MyColors.redColor,
borderColor: MyColors.redColor,
onPressed: () {
if (pickedItems != null && pickedItems!.isNotEmpty) {
pickedItems!.clear();
}
pop(context);
},
),
),
12.width,
Expanded(
child: ShowFillButton(
title: LocaleKeys.add.tr(),
maxWidth: double.infinity,
onPressed: () async {
if (pickedItems != null && pickedItems!.isNotEmpty) {
List<int> items = [];
pickedItems?.forEach((element) {
items.add(element.id);
});
Utils.showLoading(context);
var postParams = {"providerBranchID": widget.appointmentListModel.branchId, "appointmentID": widget.appointmentListModel.id, "serviceItemID": items};
GenericRespModel res = await serviceVM!.addNewServiceInAppointment(postParams);
_updateAppointment(context, widget.appointmentListModel.branchId ?? 0);
Utils.hideLoading(context);
if (res.messageStatus == 1) {
Utils.showToast(LocaleKeys.itemsAddedSuccessfully.tr());
pop(context);
} else {
Utils.showToast(res.message.toString());
}
} else {
Utils.showToast(LocaleKeys.pleaseSelectItems.tr());
}
},
),
),
],
),
],
);
},
);
},
),
],
),
),
Positioned(
bottom: 0,
left: 0,
right: 0,
child: Row(
children: [
Expanded(
child: ShowFillButton(
title: LocaleKeys.cancel.tr(),
maxWidth: double.infinity,
isFilled: false,
txtColor: MyColors.redColor,
borderColor: MyColors.redColor,
onPressed: () {
if (pickedItems != null && pickedItems!.isNotEmpty) {
pickedItems!.clear();
}
pop(context);
},
),
),
12.width,
Expanded(
child: ShowFillButton(
title: LocaleKeys.add.tr(),
maxWidth: double.infinity,
onPressed: () async {
if (pickedItems != null && pickedItems!.isNotEmpty) {
List<int> items = [];
pickedItems?.forEach((element) {
items.add(element.id);
});
Utils.showLoading(context);
var postParams = {"providerBranchID": widget.appointmentListModel.branchId, "appointmentID": widget.appointmentListModel.id, "serviceItemID": items};
GenericRespModel res = await serviceVM!.addNewServiceInAppointment(postParams);
_updateAppointment(context, widget.appointmentListModel.branchId ?? 0);
Utils.hideLoading(context);
if (res.messageStatus == 1) {
Utils.showToast(LocaleKeys.itemsAddedSuccessfully.tr());
pop(context);
pop(context);
} else {
Utils.showToast(res.message.toString());
}
} else {
Utils.showToast(LocaleKeys.pleaseSelectItems.tr());
}
},
),
),
],
).toWhiteContainer(width: double.infinity),
),
],
),
),

@ -38,7 +38,6 @@ class UpdateAppointmentPage extends StatelessWidget {
if (appointmentsVM.state == ViewState.busy) {
return const Center(child: CircularProgressIndicator());
} else {
print(appointmentListModel.appointmentPaymentStatusEnum);
return Column(
children: [
Expanded(
@ -191,6 +190,8 @@ class UpdateAppointmentPage extends StatelessWidget {
Utils.showLoading(context);
await appointmentsVM.updateAppointmentStatus(appointmentId: appointmentListModel.id!, appointmentStatusEnum: AppointmentStatusEnum.workStarted);
Utils.hideLoading(context);
pop(context);
// showMyBottomSheet(
// context,
// child: ShowCollectPaymentSheet(
@ -211,6 +212,7 @@ class UpdateAppointmentPage extends StatelessWidget {
await appointmentsVM.updateAppointmentPaymentStatus({"appointmentID": appointmentListModel.id.toString(), "appointmentServicePaymentStatusID": 2});
_updateAppointment(context, appointmentListModel.branchId ?? 0);
Utils.hideLoading(context);
pop(context);
},
);
}
@ -224,6 +226,7 @@ class UpdateAppointmentPage extends StatelessWidget {
await appointmentsVM.updateAppointmentStatus(appointmentId: appointmentListModel.id!, appointmentStatusEnum: AppointmentStatusEnum.arrived);
_updateAppointment(context, appointmentListModel.branchId ?? 0);
Utils.hideLoading(context);
pop(context);
},
);
}
@ -237,6 +240,7 @@ class UpdateAppointmentPage extends StatelessWidget {
await appointmentsVM.updateAppointmentPaymentStatus({"appointmentID": appointmentListModel.id.toString(), "appointmentServicePaymentStatusID": 4});
_updateAppointment(context, appointmentListModel.branchId ?? 0);
Utils.hideLoading(context);
pop(context);
},
);
}
@ -250,6 +254,7 @@ class UpdateAppointmentPage extends StatelessWidget {
await appointmentsVM.updateAppointmentStatus(appointmentId: appointmentListModel.id!, appointmentStatusEnum: AppointmentStatusEnum.visitCompleted);
_updateAppointment(context, appointmentListModel.branchId ?? 0);
Utils.hideLoading(context);
pop(context);
},
);
}

@ -6,6 +6,7 @@ import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/services_models/item_model.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/widgets/button/show_fill_button.dart';
import 'package:mc_common_app/widgets/empty_widget.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:mc_common_app/widgets/txt_field.dart';
import 'package:provider/provider.dart';
@ -17,16 +18,11 @@ class SelectItemsSheet extends StatelessWidget {
Function(List<ItemData>) onSelectItems;
List<PickerItem>? list;
SelectItemsSheet(
{Key? key,
required this.serviceId,
required this.onSelectItems,
this.list})
: super(key: key);
SelectItemsSheet({Key? key, required this.serviceId, required this.onSelectItems, this.list}) : super(key: key);
@override
Widget build(BuildContext context) {
context.read<ItemsVM>().getServiceItems(serviceId,list: list);
context.read<ItemsVM>().getServiceItems(serviceId, list: list);
return SizedBox(
width: double.infinity,
height: MediaQuery.of(context).size.height / 1.4,
@ -34,7 +30,7 @@ class SelectItemsSheet extends StatelessWidget {
children: [
Expanded(
child: Consumer<ItemsVM>(
builder: (_, model, child) {
builder: (_, itemsVM, child) {
return Padding(
padding: const EdgeInsets.only(left: 20, right: 20, top: 6),
child: Column(
@ -42,19 +38,10 @@ class SelectItemsSheet extends StatelessWidget {
Row(
children: [
Expanded(
child: LocaleKeys.selectItems.tr()
.toText(fontSize: 24, isBold: true),
child: LocaleKeys.selectItems.tr().toText(fontSize: 24, isBold: true),
),
Center(
child: (model.serviceItems == null
? "0"
: model.serviceItems!.data!
.where((element) =>
element.isUpdateOrSelected == true)
.toList()
.length
.toString())
.toText(
child: (itemsVM.serviceItems == null ? "0" : itemsVM.serviceItems!.data!.where((element) => element.isUpdateOrSelected == true).toList().length.toString()).toText(
fontSize: 10,
isBold: true,
color: Colors.white,
@ -68,50 +55,36 @@ class SelectItemsSheet extends StatelessWidget {
),
],
),
12.height,
TxtField(
hint: LocaleKeys.searchItems.tr(),
onChanged: (v) {},
),
// 12.height,
// TxtField(
// hint: LocaleKeys.searchItems.tr(),
// onChanged: (v) {},
// ),
12.height,
Expanded(
child: model.serviceItems?.data == null
child: itemsVM.serviceItems?.data == null
? const Center(child: CircularProgressIndicator())
: model.serviceItems?.data!.length == 0
? Center(child: "No Item Found".toText())
: itemsVM.serviceItems?.data!.length == 0
? Center(child: EmptyWidget(text: LocaleKeys.noItemstoShow.tr()))
: ListView.separated(
itemBuilder:
(BuildContext context, int index) {
return Row(
children: [
Checkbox(
value: model
.serviceItems!
.data![index]
.isUpdateOrSelected,
onChanged: (bool? v) {
model.serviceItems!.data![index]
.isUpdateOrSelected = v;
model.notifyListeners();
},
),
12.width,
Expanded(
child: model.serviceItems!
.data![index].name!
.toText(),
),
],
itemBuilder: (BuildContext context, int index) {
return CheckboxListTile(
contentPadding: EdgeInsets.zero,
controlAffinity: ListTileControlAffinity.leading,
title: itemsVM.serviceItems!.data![index].name!.toText(fontSize: 16),
subtitle: itemsVM.serviceItems!.data![index].price.toString().toText(fontSize: 14, color: MyColors.lightTextColor),
value: itemsVM.serviceItems!.data![index].isUpdateOrSelected,
onChanged: (bool? v) {
itemsVM.serviceItems!.data![index].isUpdateOrSelected = v;
itemsVM.notifyListeners();
},
);
},
separatorBuilder:
(BuildContext context, int index) {
return const Divider(
height: 1,
);
separatorBuilder: (BuildContext context, int index) {
return const Divider(height: 1);
},
itemCount:
model.serviceItems?.data?.length ?? 0,
itemCount: itemsVM.serviceItems?.data?.length ?? 0,
),
),
],
@ -127,11 +100,11 @@ class SelectItemsSheet extends StatelessWidget {
onPressed: () {
if (context.read<ItemsVM>().serviceItems != null) {
List<ItemData> list = [];
context.read<ItemsVM>().serviceItems!.data!.forEach((element) {
for (var element in context.read<ItemsVM>().serviceItems!.data!) {
if (element.isUpdateOrSelected ?? false) {
list.add(element);
}
});
}
onSelectItems(list);
}

@ -5,6 +5,7 @@ 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/appointments_models/appointment_list_model.dart';
import 'package:mc_common_app/theme/colors.dart';
import 'package:mc_common_app/utils/enums.dart';
import 'package:mc_common_app/widgets/extensions/extensions_widget.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:easy_localization/easy_localization.dart';
@ -41,10 +42,7 @@ class GeneralAppointmentWidget extends StatelessWidget {
if (isNeedToShowItems) {
itemsList = List.generate(
appointmentListModel.appointmentServicesList?.first.serviceItems?.length ?? 0,
(index) => (appointmentListModel.appointmentServicesList?.first.serviceItems?[index].name ?? "").toString().toText(
color: MyColors.lightTextColor,
isBold: true,
),
(mIndex) => showItems((appointmentListModel.appointmentServicesList?.first.serviceItems?[mIndex].name ?? "").toString(), MyAssets.modificationsIcon),
);
}
return [
@ -53,7 +51,7 @@ class GeneralAppointmentWidget extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start,
children: [
showServices(
appointmentListModel.appointmentServicesList![0].providerServiceDescription,
appointmentListModel.appointmentServicesList!.first.providerServiceDescription,
MyAssets.modificationsIcon,
),
if (isNeedToShowItems) ...itemsList,
@ -69,10 +67,11 @@ class GeneralAppointmentWidget extends StatelessWidget {
if (isNeedToShowItems) {
itemsList = List.generate(
appointmentListModel.appointmentServicesList?[index].serviceItems?.length ?? 0,
(mIndex) => (" - ${appointmentListModel.appointmentServicesList?[index].serviceItems?[mIndex].name ?? ""}").toString().toText(
color: MyColors.lightTextColor,
isBold: true,
),
// (mIndex) => (" - ${appointmentListModel.appointmentServicesList?[index].serviceItems?[mIndex].name ?? ""}").toString().toText(
// color: MyColors.lightTextColor,
// ),
(mIndex) => showItems((appointmentListModel.appointmentServicesList?[index].serviceItems?[mIndex].name ?? "").toString(), MyAssets.modificationsIcon),
);
}
@ -82,7 +81,7 @@ class GeneralAppointmentWidget extends StatelessWidget {
showServices(appointmentListModel.appointmentServicesList![index].providerServiceDescription, MyAssets.modificationsIcon),
if (isNeedToShowItems) ...itemsList,
],
).paddingOnly(bottom: 4);
).paddingOnly(bottom: 6);
},
);
@ -186,7 +185,7 @@ class GeneralAppointmentWidget extends StatelessWidget {
children: [
"${LocaleKeys.location.tr()}: ".toText(color: MyColors.lightTextColor),
2.width,
(appointmentListModel.appointmentType == 1 ? LocaleKeys.home.tr() : LocaleKeys.workshop.tr()).toText(
(appointmentListModel.appointmentTypeEnum == AppointmentTypeEnum.home ? LocaleKeys.home.tr() : LocaleKeys.workshop.tr()).toText(
fontSize: 12,
),
],
@ -304,4 +303,22 @@ class GeneralAppointmentWidget extends StatelessWidget {
],
);
}
Widget showItems(String title, String icon) {
return Row(
children: [
SvgPicture.asset(
icon,
color: Colors.transparent,
),
8.width,
Flexible(
child: title.toText(
fontSize: 10,
color: MyColors.lightTextColor,
),
),
],
);
}
}

@ -144,7 +144,7 @@ class BranchDetailPage extends StatelessWidget {
return actionWidget.paddingAll(21);
}
Widget buildServiceTileWidget(int pIndex, ServiceVM vmodel) {
Widget buildServiceTileWidget(int pIndex, ServiceVM serviceVM) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
@ -166,7 +166,7 @@ class BranchDetailPage extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
vmodel.categories[pIndex].categoryName.toString().toText(fontSize: 16),
serviceVM.categories[pIndex].categoryName.toString().toText(fontSize: 16),
],
),
8.height,
@ -178,14 +178,16 @@ class BranchDetailPage extends StatelessWidget {
child: ListView.builder(
itemBuilder: (context, index) {
return Container(
child: (EasyLocalization.of(context)?.currentLocale?.countryCode == "SA" ? vmodel.categories[pIndex].services![index].serviceDescriptionN.toString() : vmodel.categories[pIndex].services![index].serviceDescription.toString())
child: (EasyLocalization.of(context)?.currentLocale?.countryCode == "SA"
? serviceVM.categories[pIndex].services![index].serviceDescriptionN.toString()
: serviceVM.categories[pIndex].services![index].serviceDescription.toString())
.toText(
fontSize: 12,
color: MyColors.lightTextColor,
),
);
},
itemCount: vmodel.categories[pIndex].services?.length,
itemCount: serviceVM.categories[pIndex].services?.length,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.zero,
@ -204,7 +206,7 @@ class BranchDetailPage extends StatelessWidget {
getBranchUsers(context);
return Scaffold(
appBar: CustomAppBar(title: LocaleKeys.branchDetail.tr()),
body: Consumer<ServiceVM>(builder: (context, model, _) {
body: Consumer<ServiceVM>(builder: (context, serviceVM, _) {
return SizedBox(
width: double.infinity,
height: double.infinity,
@ -333,13 +335,13 @@ class BranchDetailPage extends StatelessWidget {
}),
ListView.separated(
itemBuilder: (context, pIndex) {
return buildServiceTileWidget(pIndex, model).onPress(() {
model.categories[pIndex].branchId = branchData.id.toString();
model.categories[pIndex].branchName = branchData.branchName.toString();
navigateWithName(context, ProviderAppRoutes.servicesList, arguments: model.categories[pIndex]);
return buildServiceTileWidget(pIndex, serviceVM).onPress(() {
serviceVM.categories[pIndex].branchId = branchData.id.toString();
serviceVM.categories[pIndex].branchName = branchData.branchName.toString();
navigateWithName(context, ProviderAppRoutes.servicesList, arguments: serviceVM.categories[pIndex]);
});
},
itemCount: model.categories.length,
itemCount: serviceVM.categories.length,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.all(20),

@ -107,7 +107,7 @@ class _SchedulesListPageState extends State<SchedulesListPage> {
onPressed: () async {
return deleteScheduleConfirmationSheet(index, scheduleVM, context);
},
icon: const Icon(Icons.delete),
icon: const Icon(Icons.delete_outline),
color: Colors.red,
),
Padding(

@ -2,12 +2,11 @@ import 'package:flutter/material.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';
import 'package:mc_common_app/main.dart';
import 'package:mc_common_app/models/subscriptions_models/provider_subscription_model.dart';
import 'package:mc_common_app/generated/locale_keys.g.dart';
import 'package:mc_common_app/models/subscriptions_models/subscription_model.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/widgets/extensions/extensions_widget.dart';
class MySubscriptionsCard extends StatelessWidget {
@ -90,10 +89,11 @@ class MySubscriptionsCard extends StatelessWidget {
fontSize: 29,
isBold: true,
letterSpacing: -1.77,
height: 1,
color: textColor,
),
2.width,
" SAR/Month".toText(color: MyColors.lightTextColor, fontSize: 16, letterSpacing: -0.64),
" ${LocaleKeys.sar.tr()}/Month".toText(color: MyColors.lightTextColor, fontSize: 16, letterSpacing: -0.64).paddingOnly(bottom: 3),
],
),
),

Loading…
Cancel
Save