CMC Tweaks Completed

pull/98/head
faizatflutter 2 weeks ago
parent da579dfd09
commit 95bd2a2a7e

@ -37,6 +37,22 @@ class HmgServicesViewModel extends ChangeNotifier {
await getAllCmcOrders();
}
// Helper to sort hospitals by distance (ascending). Safely converts distanceinkMS to double.
void _sortHospitalsByDistance(List<HospitalsModel> list) {
double toDouble(dynamic v) {
if (v == null) return double.infinity;
if (v is num) return v.toDouble();
if (v is String) return double.tryParse(v) ?? double.infinity;
return double.infinity;
}
list.sort((a, b) {
final da = toDouble(a.distanceInKilometers);
final db = toDouble(b.distanceInKilometers);
return da.compareTo(db);
});
}
Future<void> getAllCmcOrders({
Function(dynamic)? onSuccess,
Function(String)? onError,
@ -167,6 +183,8 @@ class HmgServicesViewModel extends ChangeNotifier {
if (apiResponse.messageStatus == 1) {
hospitalsList = apiResponse.data ?? [];
filteredHospitalsList = List.from(hospitalsList);
// ensure hospitals are sorted by distance before showing
_sortHospitalsByDistance(filteredHospitalsList);
notifyListeners();
if (onSuccess != null) {
onSuccess(apiResponse);
@ -184,11 +202,13 @@ class HmgServicesViewModel extends ChangeNotifier {
void filterHospitalsByString(String searchText, bool isArabic) {
if (searchText.isEmpty) {
filteredHospitalsList = List.from(hospitalsList);
_sortHospitalsByDistance(filteredHospitalsList);
} else {
filteredHospitalsList = hospitalsList.where((HospitalsModel hospital) {
final name = isArabic ? (hospital.nameN ?? '') : (hospital.name ?? '');
return name.toLowerCase().contains(searchText.toLowerCase());
}).toList();
_sortHospitalsByDistance(filteredHospitalsList);
}
notifyListeners();
}
@ -201,6 +221,7 @@ class HmgServicesViewModel extends ChangeNotifier {
void clearHospitalSelection() {
selectedHospital = null;
filteredHospitalsList = List.from(hospitalsList);
_sortHospitalsByDistance(filteredHospitalsList);
notifyListeners();
}

@ -62,9 +62,9 @@ class HospitalsModel {
mainProjectID = json['MainProjectID'];
projectOutSA = json['ProjectOutSA'];
usingInDoctorApp = json['UsingInDoctorApp'];
this.isHMC = json["IsHMC"];
this.regionArabic = json['RegionNameN'];
this.regionEnglish = json['RegionName'];
isHMC = json["IsHMC"];
regionArabic = json['RegionNameN'];
regionEnglish = json['RegionName'];
}
String? getRegionName(bool isArabic) {
@ -83,24 +83,22 @@ class HospitalsModel {
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['Desciption'] = this.desciption;
data['DesciptionN'] = this.desciptionN;
data['ID'] = this.iD;
data['LegalName'] = this.legalName;
data['LegalNameN'] = this.legalNameN;
data['Name'] = this.name;
data['NameN'] = this.nameN;
data['PhoneNumber'] = this.phoneNumber;
data['SetupID'] = this.setupID;
data['DistanceInKilometers'] = this.distanceInKilometers;
data['IsActive'] = this.isActive;
data['Latitude'] = this.latitude;
data['Longitude'] = this.longitude;
data['MainProjectID'] = this.mainProjectID;
data['ProjectOutSA'] = this.projectOutSA;
data['UsingInDoctorApp'] = this.usingInDoctorApp;
data['Desciption'] = desciption;
data['DesciptionN'] = desciptionN;
data['ID'] = iD;
data['LegalName'] = legalName;
data['LegalNameN'] = legalNameN;
data['Name'] = name;
data['NameN'] = nameN;
data['PhoneNumber'] = phoneNumber;
data['SetupID'] = setupID;
data['DistanceInKilometers'] = distanceInKilometers;
data['IsActive'] = isActive;
data['Latitude'] = latitude;
data['Longitude'] = longitude;
data['MainProjectID'] = mainProjectID;
data['ProjectOutSA'] = projectOutSA;
data['UsingInDoctorApp'] = usingInDoctorApp;
return data;
}
}

@ -6,19 +6,15 @@ import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
import 'package:hmg_patient_app_new/core/utils/utils.dart';
import 'package:hmg_patient_app_new/extensions/route_extensions.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart';
import 'package:hmg_patient_app_new/features/hmg_services/models/req_models/order_update_req_model.dart';
import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_all_orders_resp_model.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/widgets/cmc_ui_selection_helper.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart';
import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
import 'package:provider/provider.dart';
class CmcOrderDetailPage extends StatefulWidget {
@ -65,78 +61,6 @@ class _CmcOrderDetailPageState extends State<CmcOrderDetailPage> {
}
}
void _showCancelConfirmationDialog({required GetCMCAllOrdersResponseModel order}) {
final HmgServicesViewModel hmgServicesViewModel = context.read<HmgServicesViewModel>();
return showCommonBottomSheetWithoutHeight(
title: LocaleKeys.notice.tr(context: context),
context,
child: Utils.getWarningWidget(
loadingText: "Are you sure you want to cancel this order?".needTranslation,
isShowActionButtons: true,
onCancelTap: () {
Navigator.pop(context);
},
onConfirmTap: () async {
Navigator.pop(context);
LoaderBottomSheet.showLoader();
final requestModel = OrderUpdateRequestModel(
presOrderID: order.iD,
rejectionReason: "Cancelled by user",
presOrderStatus: 4, // Cancelled status
editedBy: 3,
);
await hmgServicesViewModel.updateCmcPresOrder(
requestModel: requestModel,
onSuccess: (_) async {
LoaderBottomSheet.hideLoader();
showCommonBottomSheetWithoutHeight(
context,
child: Padding(
padding: EdgeInsets.all(16.w),
child: Column(
children: [
Utils.getSuccessWidget(loadingText: "Order has been cancelled successfully".needTranslation),
SizedBox(height: 24.h),
Row(
children: [
Expanded(
child: CustomButton(
height: 56.h,
text: LocaleKeys.ok.tr(),
onPressed: () {
context.pop();
context.pop();
hmgServicesViewModel.getAllCmcOrders();
},
textColor: AppColors.whiteColor,
),
),
],
),
],
),
),
isCloseButtonVisible: false,
isDismissible: false,
isFullScreen: false,
);
},
onError: (error) {
LoaderBottomSheet.hideLoader();
},
);
},
),
callBackFunc: () {},
isFullScreen: false,
isCloseButtonVisible: true,
);
}
Widget _buildLoadingShimmer() {
return ListView.separated(
shrinkWrap: true,
@ -241,7 +165,7 @@ class _CmcOrderDetailPageState extends State<CmcOrderDetailPage> {
Expanded(
child: CustomButton(
text: "Cancel Order".needTranslation,
onPressed: isLoading ? () {} : () => _showCancelConfirmationDialog(order: order),
onPressed: isLoading ? () {} : () => CmcUiSelectionHelper.showCancelConfirmationDialog(context: context, order: order),
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,

@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
@ -12,8 +14,9 @@ import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_mode
import 'package:hmg_patient_app_new/features/hmg_services/models/req_models/cmc_create_new_order_req_model.dart';
import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_services_resp_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart';
import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/widgets/cmc_hospital_selection_helper.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/widgets/cmc_ui_selection_helper.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
@ -26,11 +29,7 @@ class CmcSelectionReviewPage extends StatefulWidget {
final GetCMCServicesResponseModel selectedService;
final HospitalsModel? preSelectedHospital;
const CmcSelectionReviewPage({
super.key,
required this.selectedService,
this.preSelectedHospital,
});
const CmcSelectionReviewPage({super.key, required this.selectedService, this.preSelectedHospital});
@override
State<CmcSelectionReviewPage> createState() => _CmcSelectionReviewPageState();
@ -66,6 +65,8 @@ class _CmcSelectionReviewPageState extends State<CmcSelectionReviewPage> {
_buildOrderSummaryCard(isArabic),
SizedBox(height: 16.h),
_buildSelectedServiceCard(isArabic),
SizedBox(height: 16.h),
_buildPaymentSummary(),
],
),
),
@ -98,7 +99,7 @@ class _CmcSelectionReviewPageState extends State<CmcSelectionReviewPage> {
),
SizedBox(height: 12.h),
_buildHospitalSelector(isArabic, selectedHospital, isLocationSelected),
if (isLocationSelected && selectedHospital != null) ...[
if (isLocationSelected) ...[
SizedBox(height: 16.h),
_buildHospitalMap(selectedHospital),
],
@ -157,17 +158,19 @@ class _CmcSelectionReviewPageState extends State<CmcSelectionReviewPage> {
final String lat = selectedHospital.latitude ?? "0.0";
final String lng = selectedHospital.longitude ?? "0.0";
log("selectedHospital: $lng and $lat");
if (lat == "0.0" || lng == "0.0") return SizedBox.shrink();
// final String staticMapUrl =
// "https://maps.googleapis.com/maps/api/staticmap?center=$lat,$lng&zoom=16&size=600x300&maptype=roadmap&markers=color:red%7C$lat,$lng&key=AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8";
final String staticMapUrl =
"https://maps.googleapis.com/maps/api/staticmap?center=$lat,$lng&zoom=16&size=600x300&maptype=roadmap&markers=color:red%7C$lat,$lng&key=AIzaSyCyDbWUM9d_sBUGIE8PcuShzPaqO08NSC8";
return Stack(
children: [
ClipRRect(
borderRadius: BorderRadius.circular(12.r),
child: Image.network(
"staticMapUrl",
staticMapUrl,
height: 200.h,
width: double.infinity,
fit: BoxFit.cover,
@ -267,27 +270,87 @@ class _CmcSelectionReviewPageState extends State<CmcSelectionReviewPage> {
color: AppColors.greyTextColor,
letterSpacing: -0.4,
),
SizedBox(height: 12.h),
SizedBox(height: 6.h),
Row(
children: [
Expanded(child: serviceName.toText16(weight: FontWeight.w700, color: AppColors.blackColor, letterSpacing: -0.5)),
],
),
SizedBox(height: 8.h),
],
),
);
}
Widget _buildPaymentSummary() {
// Use selected service from widget
final service = widget.selectedService;
log("service: ${service.toJson()}");
final double amountBeforeTax = service.price ?? 0.0;
final double taxAmount = service.priceVAT ?? 0.0;
final double totalAmount = service.priceTotal ?? (amountBeforeTax + taxAmount);
return Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: AppColors.whiteColor,
borderRadius: 24.h,
hasShadow: false,
),
child: Consumer<PayfortViewModel>(builder: (context, payfortVM, child) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 24.h),
"Total amount to pay".needTranslation.toText18(isBold: true).paddingSymmetrical(24.h, 0.h),
SizedBox(height: 17.h),
// Amount before tax
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"${"Price".needTranslation}: ".toText14(weight: FontWeight.w500, color: AppColors.greyTextColor, letterSpacing: -0.4),
"Amount before tax".needTranslation.toText14(isBold: true),
Utils.getPaymentAmountWithSymbol(
isExpanded: false,
price.toString().toText14(weight: FontWeight.w700),
AppColors.primaryRedColor,
16,
amountBeforeTax.toString().toText16(isBold: true),
AppColors.blackColor,
13,
isSaudiCurrency: true,
),
],
).paddingSymmetrical(24.h, 0.h),
// VAT (use label VAT 15% if desired)
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"VAT 15%".needTranslation.toText14(isBold: true, color: AppColors.greyTextColor),
Utils.getPaymentAmountWithSymbol(
taxAmount.toString().toText14(isBold: true, color: AppColors.greyTextColor),
AppColors.greyTextColor,
13,
isSaudiCurrency: true,
),
],
).paddingSymmetrical(24.h, 0.h),
SizedBox(height: 17.h),
// Total Amount
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"".needTranslation.toText14(isBold: true),
Utils.getPaymentAmountWithSymbol(
totalAmount.toString().toText24(isBold: true),
AppColors.blackColor,
17,
isSaudiCurrency: true,
),
],
).paddingSymmetrical(24.h, 0.h),
SizedBox(height: 16.h),
],
);
}),
);
}
@ -329,7 +392,7 @@ class _CmcSelectionReviewPageState extends State<CmcSelectionReviewPage> {
}
void _showHospitalSelectionBottomSheet() {
CmcHospitalSelectionHelper.showHospitalSelectionBottomSheet(context: context, onHospitalSelected: (hospital) => context.pop());
CmcUiSelectionHelper.showHospitalSelectionBottomSheet(context: context, onHospitalSelected: (hospital) => context.pop());
}
void _launchDirections(HospitalsModel selectedHospital) {

@ -14,7 +14,7 @@ import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get
import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_services_resp_model.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/cmc_order_detail_page.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/cmc_selection_review_page.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/widgets/cmc_hospital_selection_helper.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/widgets/cmc_ui_selection_helper.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
@ -83,6 +83,8 @@ class _ComprehensiveCheckupPageState extends State<ComprehensiveCheckupPage> {
statusColor = AppColors.statusRejectedColor;
}
final canCancel = order.statusId == 1 || order.statusId == 2;
return Container(
width: double.infinity,
margin: EdgeInsets.all(16.w),
@ -185,6 +187,26 @@ class _ComprehensiveCheckupPageState extends State<ComprehensiveCheckupPage> {
],
),
),
if (canCancel) ...[
SizedBox(height: 16.h),
Row(
children: [
Expanded(
child: CustomButton(
text: "Cancel Order".needTranslation,
onPressed: () => CmcUiSelectionHelper.showCancelConfirmationDialog(context: context, order: order),
backgroundColor: AppColors.primaryRedColor,
borderColor: AppColors.primaryRedColor,
textColor: AppColors.whiteColor,
fontSize: 14.f,
fontWeight: FontWeight.w600,
borderRadius: 10.r,
height: 44.h,
),
),
],
),
]
],
),
),
@ -295,17 +317,13 @@ class _ComprehensiveCheckupPageState extends State<ComprehensiveCheckupPage> {
hmgServicesViewModel.setSelectedServiceForOrder(_selectedService);
hmgServicesViewModel.getHospitalsList();
// Show hospital selection bottom sheet using common helper
CmcHospitalSelectionHelper.showHospitalSelectionBottomSheet(
CmcUiSelectionHelper.showHospitalSelectionBottomSheet(
context: context,
onHospitalSelected: (hospital) {
// Navigate to review page
Navigator.of(context).pushReplacement(
CustomPageRoute(
page: CmcSelectionReviewPage(
selectedService: _selectedService!,
preSelectedHospital: hospital,
),
direction: AxisDirection.down,
page: CmcSelectionReviewPage(selectedService: _selectedService!, preSelectedHospital: hospital),
direction: AxisDirection.left,
),
);
},
@ -349,7 +367,7 @@ class _ComprehensiveCheckupPageState extends State<ComprehensiveCheckupPage> {
return SafeArea(
top: false,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 12.h),
padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 12.h),
child: CustomButton(
borderWidth: 0,
text: "Next".needTranslation,

@ -1,3 +1,5 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_state.dart';
@ -86,6 +88,7 @@ class CmcHospitalListItem extends StatelessWidget {
}
Widget _buildDistanceInfo() {
log("hospital: ${hospital.distanceInKilometers}");
final distanceText = hospital.distanceInKilometers != null ? hospital.distanceInKilometers!.toStringAsFixed(1) : "0";
return Row(
@ -95,8 +98,8 @@ class CmcHospitalListItem extends StatelessWidget {
visible: (hospital.distanceInKilometers != null && hospital.distanceInKilometers! > 0),
child: AppCustomChipWidget(
labelText: "$distanceText km".needTranslation,
deleteIcon: AppAssets.location_red,
deleteIconSize: Size(9, 12),
icon: AppAssets.location_red,
iconColor: AppColors.errorColor,
backgroundColor: AppColors.secondaryLightRedColor,
textColor: AppColors.errorColor,
),

@ -1,26 +0,0 @@
import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/widgets/cmc_hospital_bottom_sheet_body.dart';
import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
import 'package:provider/provider.dart';
class CmcHospitalSelectionHelper {
static void showHospitalSelectionBottomSheet({
required BuildContext context,
required Function(dynamic) onHospitalSelected,
}) {
final hmgServicesViewModel = context.read<HmgServicesViewModel>();
showCommonBottomSheetWithoutHeight(
context,
title: "Select Hospital".needTranslation,
child: CmcHospitalBottomSheetBody(
onHospitalSelected: (hospital) {
hmgServicesViewModel.setSelectedHospitalForOrder(hospital);
onHospitalSelected(hospital);
},
),
);
}
}

@ -0,0 +1,110 @@
import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart';
import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/widgets/cmc_hospital_bottom_sheet_body.dart';
import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart';
import 'package:provider/provider.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
import 'package:hmg_patient_app_new/core/utils/utils.dart';
import 'package:hmg_patient_app_new/extensions/route_extensions.dart';
import 'package:hmg_patient_app_new/features/hmg_services/models/req_models/order_update_req_model.dart';
import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_all_orders_resp_model.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
class CmcUiSelectionHelper {
static void showHospitalSelectionBottomSheet({
required BuildContext context,
required Function(dynamic) onHospitalSelected,
}) {
final hmgServicesViewModel = context.read<HmgServicesViewModel>();
showCommonBottomSheetWithoutHeight(
context,
title: "Select Hospital".needTranslation,
child: CmcHospitalBottomSheetBody(
onHospitalSelected: (hospital) {
hmgServicesViewModel.setSelectedHospitalForOrder(hospital);
onHospitalSelected(hospital);
},
),
);
}
static void showCancelConfirmationDialog({
required BuildContext context,
required GetCMCAllOrdersResponseModel order,
}) {
final HmgServicesViewModel hmgServicesViewModel = context.read<HmgServicesViewModel>();
return showCommonBottomSheetWithoutHeight(
title: LocaleKeys.notice.tr(context: context),
context,
child: Utils.getWarningWidget(
loadingText: "Are you sure you want to cancel this order?".needTranslation,
isShowActionButtons: true,
onCancelTap: () {
Navigator.pop(context);
},
onConfirmTap: () async {
Navigator.pop(context);
LoaderBottomSheet.showLoader();
final requestModel = OrderUpdateRequestModel(
presOrderID: order.iD,
rejectionReason: "Cancelled by user",
presOrderStatus: 4, // Cancelled status
editedBy: 3,
);
await hmgServicesViewModel.updateCmcPresOrder(
requestModel: requestModel,
onSuccess: (_) async {
LoaderBottomSheet.hideLoader();
showCommonBottomSheetWithoutHeight(
context,
child: Padding(
padding: EdgeInsets.all(16.w),
child: Column(
children: [
Utils.getSuccessWidget(loadingText: "Order has been cancelled successfully".needTranslation),
SizedBox(height: 24.h),
Row(
children: [
Expanded(
child: CustomButton(
height: 56.h,
text: LocaleKeys.ok.tr(),
onPressed: () {
context.pop();
context.pop();
hmgServicesViewModel.getAllCmcOrders();
},
textColor: AppColors.whiteColor,
),
),
],
),
],
),
),
isCloseButtonVisible: false,
isDismissible: false,
isFullScreen: false,
);
},
onError: (error) {
LoaderBottomSheet.hideLoader();
},
);
},
),
callBackFunc: () {},
isFullScreen: false,
isCloseButtonVisible: true,
);
}
}

@ -67,12 +67,17 @@ class AppCustomChipWidget extends StatelessWidget {
? Chip(
avatar: icon.isNotEmpty
? Utils.buildSvgWithAssets(
icon: icon, width: iconS, height: iconS, iconColor: iconHasColor ? iconColor : null, fit: BoxFit.contain)
icon: icon,
width: iconS,
height: iconS,
iconColor: iconHasColor ? iconColor : null,
fit: BoxFit.contain,
)
: SizedBox.shrink(),
label: richText ?? labelText!.toText10(weight: FontWeight.w500, letterSpacing: 0, color: textColor),
padding: padding,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
labelPadding: labelPadding ?? EdgeInsetsDirectional.only(start: 2.w, end: deleteIcon?.isNotEmpty == true ? 2.w : 8.w),
labelPadding: labelPadding ?? EdgeInsetsDirectional.only(end: deleteIcon?.isNotEmpty == true ? 2.w : 8.w),
backgroundColor: backgroundColor,
shape: shape ??
SmoothRectangleBorder(

@ -46,7 +46,7 @@ class RadioListTileWidget<T> extends StatelessWidget {
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
color: isSelected ? AppColors.blackColor : const Color(0xff9E9E9E),
color: isSelected ? AppColors.primaryRedColor : const Color(0xff9E9E9E),
width: 2,
),
),
@ -57,7 +57,7 @@ class RadioListTileWidget<T> extends StatelessWidget {
height: 10.h,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: AppColors.blackColor,
color: AppColors.primaryRedColor,
),
),
)

Loading…
Cancel
Save