From 86fa198afc4d263453fbb64e2f02eb89b206c310 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Fri, 10 Apr 2026 19:11:24 +0300 Subject: [PATCH] Updates & fixes --- assets/images/png/default_MEP.png | Bin 0 -> 19984 bytes lib/core/app_assets.dart | 1 + lib/core/utils/utils.dart | 3 +- .../blood_donation_view_model.dart | 12 +++++- .../my_appointments_view_model.dart | 6 +-- .../prescription_detail_response_model.dart | 3 +- .../prescriptions/prescriptions_repo.dart | 6 ++- .../appointment_details_page.dart | 9 +++- .../widgets/appointment_rating_widget.dart | 1 - .../add_health_tracker_entry_page.dart | 10 ++--- .../hmg_services/services_page.dart | 3 +- .../home/data/landing_page_data.dart | 5 ++- .../home/data/service_card_data.dart | 4 +- lib/presentation/home/landing_page.dart | 3 +- .../home/widgets/large_service_card.dart | 8 +++- .../medical_file/medical_file_page.dart | 5 ++- .../medical_file_appointment_card.dart | 40 +++++++++--------- 17 files changed, 77 insertions(+), 42 deletions(-) create mode 100644 assets/images/png/default_MEP.png diff --git a/assets/images/png/default_MEP.png b/assets/images/png/default_MEP.png new file mode 100644 index 0000000000000000000000000000000000000000..d79b58d267bc09d8ae75fc81684d417e97d4e383 GIT binary patch literal 19984 zcmV)UK(N1wP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGqB>(^xB>_oNB=7(LO{GahK~#8N?VX2z zUd6HZ{l~nYdjpo$tZJ|=S#s}`5JK<81VSKG_ujiCOYXEJga8S>_ZA2QLIR;ABm_ue zz!>*B@9#Tv_IZwE$>5TEbKm=}Jv!&vbIzXK`R&ZkY&*RU*dE(2vIA!O_Ut#pt^<2) zi{d`j-{0Dw?WbQqWYgYSYF9jUqn-EAm3G=MFR}5zy2wtt{}Ma-mlxP6_kJ^-e9!p@ z(Mk7;etE8q>z2;%L}TwguM>^A=Uk^z_ndQ-bk-5m=)2Fdad(|lps~L=$K#;lJ;ZTM z`4)})`9&FBtY9I%x?L| zFYI^ro-p~RePLT|yKveISi)`pzC9dlA94FQGwZegz;1rp?!CM8cfTIkYoFUTyXU

d5)wQQwt=3sl+C)B|yCuvN7U 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 literal 0 HcmV?d00001 diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 8c57598e..44ca3b10 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -400,6 +400,7 @@ class AppAssets { static const String fullBodyFrontFemale = '$pngBasePath/full_body_front_female.png'; static const String fullBodyBackFemale = '$pngBasePath/full_body_back_female.png'; static const String bmiFullBody = '$pngBasePath/bmi_image_1.png'; + static const String defaultMEP = '$pngBasePath/default_MEP.png'; } class AppAnimations { diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index ac7af39d..bc4b82c0 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -923,7 +923,8 @@ class Utils { ), TextSpan( // text: NumberFormat.currency(locale: 'en_US', symbol: " ", decimalDigits: 0).format(habibWalletAmount), - text: " ${habibWalletAmount.toStringAsFixed(2)}", + // text: " ${(NumberFormat.decimalPattern().format(habibWalletAmount)).toStringAsFixed(2)}", + text: " ${(NumberFormat.decimalPattern().format(habibWalletAmount))}", style: TextStyle( color: resolvedTextColor, fontSize: fontSize ?? 32.f, diff --git a/lib/features/blood_donation/blood_donation_view_model.dart b/lib/features/blood_donation/blood_donation_view_model.dart index 8ad5bdec..7aa67d4f 100644 --- a/lib/features/blood_donation/blood_donation_view_model.dart +++ b/lib/features/blood_donation/blood_donation_view_model.dart @@ -1,11 +1,14 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/doctor_response_mapper.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/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_repo.dart'; import 'package:hmg_patient_app_new/features/blood_donation/models/blood_group_hospitals_model.dart'; @@ -20,6 +23,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; class BloodDonationViewModel extends ChangeNotifier { @@ -263,7 +267,13 @@ class BloodDonationViewModel extends ChangeNotifier { await bloodDonationRepo.updateBloodGroup(request: payload); await addUserAgreementForBloodDonation(); LoaderBottomSheet.hideLoader(); - dialogService.showSuccessBottomSheetWithoutH(message: "Blood Group Updated Successfully", onOkPressed: () {}); + showCommonBottomSheetWithoutHeight(GetIt.instance().navigatorKey.currentContext!, + child: Utils.getSuccessWidget(loadingText: "Blood Group Updated Successfully").paddingSymmetrical(0.h, 24.h), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: false, + isAutoDismiss: true); + // dialogService.showSuccessBottomSheetWithoutH(message: "Blood Group Updated Successfully", onOkPressed: () {}); } Future addUserAgreementForBloodDonation() async { diff --git a/lib/features/my_appointments/my_appointments_view_model.dart b/lib/features/my_appointments/my_appointments_view_model.dart index 1b49b0ca..73f8d331 100644 --- a/lib/features/my_appointments/my_appointments_view_model.dart +++ b/lib/features/my_appointments/my_appointments_view_model.dart @@ -676,9 +676,9 @@ class MyAppointmentsViewModel extends ChangeNotifier { Future getPatientFavouriteDoctors({bool forceRefresh = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { // If data is already fetched and not forcing refresh, skip API call - if (isFavouriteDoctorsDataFetched && !forceRefresh) { - return; - } + // if (isFavouriteDoctorsDataFetched && !forceRefresh) { + // return; + // } isPatientFavouriteDoctorsLoading = true; patientFavouriteDoctorsList.clear(); diff --git a/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart b/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart index b35cfef7..ef1bc6f7 100644 --- a/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart +++ b/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart @@ -33,6 +33,7 @@ class PrescriptionDetailResponseModel { num? scaleOffset; String? startDate; bool? hasReminder; + bool? isHomeMedicineDeliverySupported; PrescriptionDetailResponseModel( {this.address, @@ -68,7 +69,7 @@ class PrescriptionDetailResponseModel { this.sKU, this.scaleOffset, this.startDate, - this.hasReminder = false}); + this.hasReminder = false, this.isHomeMedicineDeliverySupported}); PrescriptionDetailResponseModel.fromJson(Map json) { address = json['Address']; diff --git a/lib/features/prescriptions/prescriptions_repo.dart b/lib/features/prescriptions/prescriptions_repo.dart index 3bfcc7fe..387d6410 100644 --- a/lib/features/prescriptions/prescriptions_repo.dart +++ b/lib/features/prescriptions/prescriptions_repo.dart @@ -99,7 +99,11 @@ class PrescriptionsRepoImp implements PrescriptionsRepo { // throw Exception("prescription list is empty"); } - final prescriptionOrders = list.map((item) => PrescriptionDetailResponseModel.fromJson(item as Map)).toList().cast(); + final List prescriptionOrders = + list.map((item) => PrescriptionDetailResponseModel.fromJson(item as Map)).toList().cast(); + if (prescriptionOrders.isNotEmpty) { + prescriptionOrders.first.isHomeMedicineDeliverySupported = response['IsHomeMedicineDeliverySupported'] ?? false; + } apiResponse = GenericApiModel>( messageStatus: messageStatus, diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index c0b469b4..2aff4f4c 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -554,7 +554,7 @@ class _AppointmentDetailsPageState extends State { clinicDescription: widget.patientAppointmentHistoryResponseModel.clinicName, decimalDoctorRate: widget.patientAppointmentHistoryResponseModel.decimalDoctorRate, name: widget.patientAppointmentHistoryResponseModel.projectName, - isHomeMedicineDeliverySupported: false, + isHomeMedicineDeliverySupported: val.data.first.isHomeMedicineDeliverySupported ?? false, projectID: widget.patientAppointmentHistoryResponseModel.projectID, clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, @@ -642,6 +642,13 @@ class _AppointmentDetailsPageState extends State { ); }, ), + callBackFunc: () { + myAppointmentsViewModel.getDoctorsRatingCheck( + doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo); + }, isFullScreen: false, ); } diff --git a/lib/presentation/appointments/widgets/appointment_rating_widget.dart b/lib/presentation/appointments/widgets/appointment_rating_widget.dart index 735895a0..11fed46a 100644 --- a/lib/presentation/appointments/widgets/appointment_rating_widget.dart +++ b/lib/presentation/appointments/widgets/appointment_rating_widget.dart @@ -165,7 +165,6 @@ class _AppointmentRatingWidgetState extends State { // await appointmentRatingViewModel!.submitClinicRating(clinicRate: rating, clinicNote: note); LoaderBottomSheet.hideLoader(); Navigator.pop(context); - setState(() {}); }, ), diff --git a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart index 89217aca..2d0356c3 100644 --- a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart +++ b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart @@ -159,14 +159,12 @@ class _AddHealthTrackerEntryPageState extends State { context, child: Utils.getSuccessWidget( loadingText: _getSuccessMessage(), - ), - callBackFunc: () { - Navigator.pop(context); - }, + ).paddingSymmetrical(0.h, 24.h), callBackFunc: () { + // Navigator.pop(context); + }, isCloseButtonVisible: false, isDismissible: true, - isFullScreen: false, - ); + isFullScreen: false, isAutoDismiss: true); } // Reusable method to build selection row widget diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index 680bf1c7..a2a3a4bf 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -430,6 +430,7 @@ class ServicesPage extends StatelessWidget { title: LandingPageData.getServiceCardsList[index].title, subtitle: LandingPageData.getServiceCardsList[index].subtitle, icon: LandingPageData.getServiceCardsList[index].largeCardIcon, + isPNG: LandingPageData.getServiceCardsList[index].isPNG, ), ), ), @@ -471,7 +472,7 @@ class ServicesPage extends StatelessWidget { Spacer(), getIt.get().isAuthenticated ? Consumer(builder: (context, habibWalletVM, child) { - return Utils.getPaymentAmountWithSymbol2(num.parse(NumberFormat.decimalPattern().format(habibWalletVM.habibWalletAmount)), isExpanded: false) + return Utils.getPaymentAmountWithSymbol2(num.parse(NumberFormat.decimalPattern().format(habibWalletVM.habibWalletAmount)), isExpanded: false, letterSpacing: -1) .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.r, width: 80.w, height: 24.h); }) : LocaleKeys.loginToViewWalletBalance.tr().toText12(isBold: true, maxLine: 2), diff --git a/lib/presentation/home/data/landing_page_data.dart b/lib/presentation/home/data/landing_page_data.dart index 00142c23..a60a7c18 100644 --- a/lib/presentation/home/data/landing_page_data.dart +++ b/lib/presentation/home/data/landing_page_data.dart @@ -164,6 +164,7 @@ class LandingPageData { backgroundColor: AppColors.successColor, iconColor: AppColors.whiteColor, isBold: false, + isPNG: false ), // ServiceCardData( // icon: AppAssets.homeBottom, @@ -182,16 +183,18 @@ class LandingPageData { backgroundColor: AppColors.primaryRedColor, iconColor: AppColors.whiteColor, isBold: false, + isPNG: false ), ServiceCardData( serviceName: "pharmacy", - icon: AppAssets.pharmacy_icon, //359846 + icon: AppAssets.defaultMEP, //359846 title: LocaleKeys.hmgPharmacy, subtitle: LocaleKeys.hmgPharmacyText, largeCardIcon: AppAssets.pharmacyService, backgroundColor: AppColors.pharmacyBGColor, iconColor: null, isBold: true, + isPNG: true ), ]; } diff --git a/lib/presentation/home/data/service_card_data.dart b/lib/presentation/home/data/service_card_data.dart index c16147b1..f2f1d121 100644 --- a/lib/presentation/home/data/service_card_data.dart +++ b/lib/presentation/home/data/service_card_data.dart @@ -12,6 +12,7 @@ class ServiceCardData { final Color? backgroundColor; final bool isBold; final String largeCardIcon; + final bool isPNG; ServiceCardData({ this.serviceName = "", @@ -22,6 +23,7 @@ class ServiceCardData { this.backgroundColor, this.iconColor, this.textColor, - this.isBold = false + this.isBold = false, + this.isPNG = false, }); } diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index e61b6226..f92c8a87 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -204,7 +204,7 @@ class _LandingPageState extends State { // Refresh Appointments Data myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); - myAppointmentsViewModel.getPatientAppointments(true, true); + myAppointmentsViewModel.getPatientAppointments(true, false); // Refresh Appointments Data habibWalletVM.initHabibWalletProvider(); @@ -822,6 +822,7 @@ class _LandingPageState extends State { title: LandingPageData.getServiceCardsList[index].title, subtitle: LandingPageData.getServiceCardsList[index].subtitle, icon: LandingPageData.getServiceCardsList[index].largeCardIcon, + isPNG: LandingPageData.getServiceCardsList[index].isPNG, ), ), ), diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index fd6676f9..208d54b8 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -28,6 +28,7 @@ class LargeServiceCard extends StatelessWidget { final String icon; final String title; final String subtitle; + final bool isPNG; const LargeServiceCard({ super.key, @@ -36,6 +37,7 @@ class LargeServiceCard extends StatelessWidget { this.icon = "", this.title = "", this.subtitle = "", + this.isPNG = false, }); @override @@ -72,7 +74,7 @@ class LargeServiceCard extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( + isPNG ? Image.asset(serviceCardData.icon, width: 35.h, height: 35.h) : Container( height: 48.h, width: 48.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -172,6 +174,7 @@ class FadedLargeServiceCard extends StatelessWidget { final String icon; final String title; final String subtitle; + final bool isPNG; const FadedLargeServiceCard({ super.key, @@ -180,6 +183,7 @@ class FadedLargeServiceCard extends StatelessWidget { this.icon = "", this.title = "", this.subtitle = "", + this.isPNG = false, }); @override @@ -225,7 +229,7 @@ class FadedLargeServiceCard extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Container( + isPNG ? Image.asset(serviceCardData.icon, width: 35.h, height: 35.h) : Container( height: 32.h, width: 32.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index 7bbfc936..b5e3ef49 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -979,7 +979,7 @@ class _MedicalFilePageState extends State { ), ).paddingSymmetrical(0.w, 0.h) : SizedBox( - height: 100.h, + height: 110.h, child: ListView.separated( scrollDirection: Axis.horizontal, itemCount: myAppointmentsVM.patientMyDoctorsList.length, @@ -1003,7 +1003,8 @@ class _MedicalFilePageState extends State { fit: BoxFit.cover, ).circle(100).toShimmer2(isShow: false, radius: 50.r), SizedBox(height: 8.h), - Expanded( + SizedBox( + width: 80.w, child: (myAppointmentsVM.patientMyDoctorsList[index].doctorName) .toString().toText12(isBold: true, isCenter: true, maxLine: 2).toShimmer2(isShow: false), ), diff --git a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart index 51e0cc15..bbe01d5a 100644 --- a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart +++ b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart @@ -163,25 +163,27 @@ class MedicalFileAppointmentCard extends StatelessWidget { } Widget getArrivedAppointmentButton(BuildContext context) { - return DateTime.now().difference(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate)).inDays <= 15 - ? CustomButton( - text: LocaleKeys.askDoctor.tr(context: context), - onPressed: () { - onAskDoctorTap(); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w600, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - icon: AppAssets.ask_doctor_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, - ) - : CustomButton( + return + // DateTime.now().difference(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate)).inDays <= 15 + // ? CustomButton( + // text: LocaleKeys.askDoctor.tr(context: context), + // onPressed: () { + // onAskDoctorTap(); + // }, + // backgroundColor: AppColors.secondaryLightRedColor, + // borderColor: AppColors.secondaryLightRedColor, + // textColor: AppColors.primaryRedColor, + // fontSize: 14.f, + // fontWeight: FontWeight.w600, + // borderRadius: 12.r, + // padding: EdgeInsets.symmetric(horizontal: 10.w), + // height: 40.h, + // icon: AppAssets.ask_doctor_icon, + // iconColor: AppColors.primaryRedColor, + // iconSize: 16.h, + // ) + // : + CustomButton( text: LocaleKeys.rebook.tr(context: context), onPressed: () { onRescheduleTap();