From c58e3956d6a3745917062dadd343302c398f2242 Mon Sep 17 00:00:00 2001 From: Haroon Amjad <> Date: Thu, 16 Jul 2026 23:54:07 +0300 Subject: [PATCH 1/4] Push notification changes & updates --- lib/core/utils/push_notification_handler.dart | 25 ++ .../notification_details_page.dart | 7 +- .../notifications_list_page.dart | 327 +++++++++--------- 3 files changed, 188 insertions(+), 171 deletions(-) diff --git a/lib/core/utils/push_notification_handler.dart b/lib/core/utils/push_notification_handler.dart index e179a1ab..89f6969a 100644 --- a/lib/core/utils/push_notification_handler.dart +++ b/lib/core/utils/push_notification_handler.dart @@ -19,7 +19,12 @@ import 'package:hmg_patient_app_new/core/api/api_client.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/cache_consts.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/notifications/models/resp_models/notification_response_model.dart'; +import 'package:hmg_patient_app_new/presentation/notifications/notification_details_page.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:uuid/uuid.dart'; @@ -523,6 +528,26 @@ class PushNotificationHandler { _incomingCall(remoteMessage.data); // showCallkitIncoming(); } else { + NotificationResponseModel notification = NotificationResponseModel(); + + notification.createdOn = DateUtil.convertDateToString(DateTime.now()); + notification.isSentOn = DateUtil.convertDateToString(DateTime.now()); + notification.messageTypeData = remoteMessage.data['picture']; + notification.messageType = notification.messageTypeData != null && notification.messageTypeData!.isNotEmpty ? "image" : ""; + notification.message = remoteMessage.data['message']; + notification.notificationType = remoteMessage.data["NotificationType"].toString(); + if (remoteMessage.data["NotificationType"] == "2") { + notification.videoURL = remoteMessage.data["VideoUrl"]; + } + + Navigator.of(getIt.get().navigatorKey.currentContext!).push( + CustomPageRoute( + page: NotificationDetailsPage( + notification: notification, + ), + ), + ); + // GetNotificationsResponseModel notification = new GetNotificationsResponseModel(); // // notification.createdOn = DateUtil.convertDateToString(DateTime.now()); diff --git a/lib/presentation/notifications/notification_details_page.dart b/lib/presentation/notifications/notification_details_page.dart index ba78a298..70f87739 100644 --- a/lib/presentation/notifications/notification_details_page.dart +++ b/lib/presentation/notifications/notification_details_page.dart @@ -1,11 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenshot_blocker/flutter_screenshot_blocker.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_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/notifications/models/resp_models/notification_response_model.dart'; +import 'package:hmg_patient_app_new/features/notifications/notifications_view_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/appbar/collapsing_list_view.dart'; @@ -21,9 +23,10 @@ class NotificationDetailsPage extends StatelessWidget { @override Widget build(BuildContext context) { + getIt.get().markAsRead(notificationID: notification.id ?? 0); return ScreenshotBlockerWidget( - blockScreenshots: true, // makes this widget appear black in screenshots - detectScreenshots: true, // listen for screenshot attempts + blockScreenshots: true, // makes this widget appear black in screenshots + detectScreenshots: true, // listen for screenshot attempts onScreenshotDetected: (event) { // event.type → 'screenshot_taken' or 'screenshot_blocked' // ScaffoldMessenger.of(context).showSnackBar( diff --git a/lib/presentation/notifications/notifications_list_page.dart b/lib/presentation/notifications/notifications_list_page.dart index afea0fba..77f9a20a 100644 --- a/lib/presentation/notifications/notifications_list_page.dart +++ b/lib/presentation/notifications/notifications_list_page.dart @@ -49,187 +49,176 @@ class _NotificationsListPageState extends State { return CollapsingListView( title: LocaleKeys.notification.tr(context: context), child: Consumer(builder: (context, notificationsVM, child) { - return Column( - children: [ - Container( - margin: EdgeInsets.symmetric(vertical: 24.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, - ), - child: ListView.builder( - itemCount: notificationsVM.isNotificationsLoading - ? 4 - // : notificationsVM.notificationsList.length + (notificationsVM.hasMoreNotifications ? 1 : 0), - : notificationsVM.notificationsList.length, - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - padding: EdgeInsetsGeometry.zero, - itemBuilder: (context, index) { - if (notificationsVM.isNotificationsLoading) { - return LabResultItemView( - onTap: () {}, - labOrder: null, - index: index, - isLoading: true, - ); - } - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 500), - child: SlideAnimation( - verticalOffset: 100.0, - child: FadeInAnimation( - child: GestureDetector( - onTap: () { - notificationsVM.markAsRead(notificationID: notificationsVM.notificationsList[index].id ?? 0); + return Column( + children: [ + Container( + margin: EdgeInsets.symmetric(vertical: 24.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + ), + child: ListView.builder( + itemCount: notificationsVM.isNotificationsLoading + ? 4 + // : notificationsVM.notificationsList.length + (notificationsVM.hasMoreNotifications ? 1 : 0), + : notificationsVM.notificationsList.length, + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsetsGeometry.zero, + itemBuilder: (context, index) { + if (notificationsVM.isNotificationsLoading) { + return LabResultItemView( + onTap: () {}, + labOrder: null, + index: index, + isLoading: true, + ); + } + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: GestureDetector( + onTap: () { + notificationsVM.markAsRead(notificationID: notificationsVM.notificationsList[index].id ?? 0); getIt.get().getPatientDashboard(); Navigator.push( - context, - MaterialPageRoute( - builder: (context) => NotificationDetailsPage( - notification: notificationsVM.notificationsList[index], + context, + MaterialPageRoute( + builder: (context) => NotificationDetailsPage( + notification: notificationsVM.notificationsList[index], + ), + ), + ); + }, + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 16.h), + // Message row with red dot for unread + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: notificationsVM.notificationsList[index].message!.toText16( + isBold: (notificationsVM.notificationsList[index].isRead == false), + weight: (notificationsVM.notificationsList[index].isRead == false) ? FontWeight.w600 : FontWeight.w400, + ), + ), + SizedBox(width: 8.w), + // Red dot for unread notifications ONLY + if (notificationsVM.notificationsList[index].isRead == false) + Container( + width: 8.w, + height: 8.w, + decoration: BoxDecoration( + color: Colors.red, + shape: BoxShape.circle, ), ), - ); - }, - child: AnimatedContainer( - duration: Duration(milliseconds: 300), - curve: Curves.easeInOut, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 16.h), - // Message row with red dot for unread - Row( - crossAxisAlignment: CrossAxisAlignment.start, + ], + ), + SizedBox(height: 12.h), + // First row: Time and Date chips with arrow + Row( + children: [ + // Time chip with clock icon + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration( + color: AppColors.greyColor, + borderRadius: BorderRadius.circular(8), + ), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, children: [ - Expanded( - child: notificationsVM.notificationsList[index].message!.toText16( - isBold: (notificationsVM.notificationsList[index].isRead == false), - weight: (notificationsVM.notificationsList[index].isRead == false) - ? FontWeight.w600 - : FontWeight.w400, - ), - ), - SizedBox(width: 8.w), - // Red dot for unread notifications ONLY - if (notificationsVM.notificationsList[index].isRead == false) - Container( - width: 8.w, - height: 8.w, - decoration: BoxDecoration( - color: Colors.red, - shape: BoxShape.circle, - ), - ), + Icon(Icons.access_time, size: 12.w, color: AppColors.textColor), + SizedBox(width: 4.w), + _formatTime(notificationsVM.notificationsList[index].isSentOn).toText10(weight: FontWeight.w600, color: AppColors.textColor, isEnglishOnly: true), ], ), - SizedBox(height: 12.h), - // First row: Time and Date chips with arrow - Row( + ), + ), + SizedBox(width: 8.w), + // Date chip with calendar icon + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration( + color: AppColors.greyColor, + borderRadius: BorderRadius.circular(8), + ), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, children: [ - // Time chip with clock icon - Container( - padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), - decoration: BoxDecoration( - color: AppColors.greyColor, - borderRadius: BorderRadius.circular(8), - ), - child: Directionality( - textDirection: ui.TextDirection.ltr, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.access_time, size: 12.w, color: AppColors.textColor), - SizedBox(width: 4.w), - _formatTime(notificationsVM.notificationsList[index].isSentOn).toText10( - weight: FontWeight.w600, - color: AppColors.textColor, - isEnglishOnly: true - ), - ], - ), - ), - ), - SizedBox(width: 8.w), - // Date chip with calendar icon - Container( - padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), - decoration: BoxDecoration( - color: AppColors.greyColor, - borderRadius: BorderRadius.circular(8), - ), - child: Directionality( - textDirection: ui.TextDirection.ltr, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.calendar_today, size: 12.w, color: AppColors.textColor), - SizedBox(width: 4.w), - _formatDate(notificationsVM.notificationsList[index].isSentOn).toText10( - weight: FontWeight.w600, - color: AppColors.textColor, - isEnglishOnly: true - ), - ], - ), - ), - ), - Spacer(), - // Arrow icon - Transform.flip( - flipX: getIt.get().isArabic(), - child: Utils.buildSvgWithAssets( - icon: AppAssets.arrow_forward, - width: 16.w, - height: 16.h, - iconColor: AppColors.greyTextColor, - ), - ), + Icon(Icons.calendar_today, size: 12.w, color: AppColors.textColor), + SizedBox(width: 4.w), + _formatDate(notificationsVM.notificationsList[index].isSentOn).toText10(weight: FontWeight.w600, color: AppColors.textColor, isEnglishOnly: true), ], ), - // Second row: Contains Image chip (if MessageType is "image") - if (notificationsVM.notificationsList[index].messageType != null && - notificationsVM.notificationsList[index].messageType!.toLowerCase() == "image") - Padding( - padding: EdgeInsets.only(top: 8.h), - child: Row( - children: [ - Container( - padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), - decoration: BoxDecoration( - color: AppColors.greyColor, - borderRadius: BorderRadius.circular(8), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.image_outlined, size: 12.w, color: AppColors.textColor), - SizedBox(width: 4.w), - LocaleKeys.containsImage.toText10( - weight: FontWeight.w600, - color: AppColors.textColor, - ), - ], - ), - ), - ], - ), + ), + ), + Spacer(), + // Arrow icon + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_forward, + width: 16.w, + height: 16.h, + iconColor: AppColors.greyTextColor, + ), + ), + ], + ), + // Second row: Contains Image chip (if MessageType is "image") + if (notificationsVM.notificationsList[index].messageType != null && notificationsVM.notificationsList[index].messageType!.toLowerCase() == "image") + Padding( + padding: EdgeInsets.only(top: 8.h), + child: Row( + children: [ + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration( + color: AppColors.greyColor, + borderRadius: BorderRadius.circular(8), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.image_outlined, size: 12.w, color: AppColors.textColor), + SizedBox(width: 4.w), + LocaleKeys.containsImage.toText10( + weight: FontWeight.w600, + color: AppColors.textColor, + ), + ], ), - SizedBox(height: 16.h), - 1.divider, + ), ], ), ), - ), - ), + SizedBox(height: 16.h), + 1.divider, + ], ), - ); - }).paddingSymmetrical(16.w, 0.h), - ).paddingSymmetrical(24.w, 0.h), - SizedBox(height: 16.h), + ), + ), + ), + ), + ); + }).paddingSymmetrical(16.w, 0.h), + ).paddingSymmetrical(24.w, 0.h), + SizedBox(height: 16.h), // SizedBox( // key: _bottomKey, // child: "Show more notifications".toText16( @@ -242,9 +231,9 @@ class _NotificationsListPageState extends State { // _scrollToBottom(); // }), SizedBox(height: 24.h), - ], - ); - }), + ], + ); + }), ); } From ea0c643ce84e398eb5758cfa74ab3008b6e134de Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Mon, 20 Jul 2026 15:14:21 +0300 Subject: [PATCH 2/4] updates --- lib/core/api_consts.dart | 4 ++-- lib/core/services/turnstile_service.dart | 4 ++++ lib/features/authentication/authentication_view_model.dart | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index 2c64b13e..8f2deaa3 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -5,7 +5,7 @@ import 'package:hmg_patient_app_new/core/enums.dart'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT @@ -301,7 +301,7 @@ class ApiConsts { static String googleCloudStorageENTranslationFileBaseURL = "https://storage.googleapis.com/hmg-patientapp-translations"; // ************ static values for Api **************** - static final double appVersionID = 21.6; + static final double appVersionID = 21.7; // static final double appVersionID = 50.7; static final int appChannelId = 3; diff --git a/lib/core/services/turnstile_service.dart b/lib/core/services/turnstile_service.dart index f6665190..b30113e0 100644 --- a/lib/core/services/turnstile_service.dart +++ b/lib/core/services/turnstile_service.dart @@ -18,6 +18,10 @@ class TurnstileService { // Initialize an instance of invisible Cloudflare Turnstile with your site key final turnstile = CloudflareTurnstile.invisible( siteKey: _siteKey, + onTimeout: () {}, + options: TurnstileOptions( + retryInterval: const Duration(milliseconds: 2000), + ), ); try { diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 6ec5d2bf..16b84d15 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -998,7 +998,10 @@ class AuthenticationViewModel extends ChangeNotifier { sendActivationCodeReq: request, isRegister: checkIsUserComingForRegister(request: payload), languageID: 'er', isFormFamilyFile: isFormFamilyFile); resultEither.fold( - (failure) async => await _errorHandlerService.handleError(failure: failure), + (failure) async { + LoaderBottomSheet.hideLoader(); + await _errorHandlerService.handleError(failure: failure); + }, (apiResponse) async { if (isFormFamilyFile) { if (apiResponse.data['PatientShareRequestID'] != null && apiResponse.data['PatientShareRequestID'] == 0 && apiResponse.messageStatus == 1) { From fe29431246df1ab25cff1fd7b05fb9c893e41319 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 21 Jul 2026 11:07:49 +0300 Subject: [PATCH 3/4] updates --- .../authentication/authentication_view_model.dart | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index 16b84d15..fdc16943 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -3,6 +3,7 @@ import 'dart:developer'; import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:get_it/get_it.dart'; @@ -979,12 +980,14 @@ class AuthenticationViewModel extends ChangeNotifier { // TODO: GET APP SMS SIGNATURE HERE request.sMSSignature = await getSignature(); - // Get Turnstile token if configured - final turnstileToken = await _turnstileService.getTurnstileToken(); - if (turnstileToken != null) { - request.turnstileToken = turnstileToken; - } else { - request.turnstileToken = ""; + if(!kDebugMode) { + // Get Turnstile token if configured + final turnstileToken = await _turnstileService.getTurnstileToken(); + if (turnstileToken != null) { + request.turnstileToken = turnstileToken; + } else { + request.turnstileToken = ""; + } } if (isNeedLoading) { From 3030c13a171608f7f30974edb9d65b54949b1840 Mon Sep 17 00:00:00 2001 From: haroon amjad Date: Tue, 21 Jul 2026 11:56:31 +0300 Subject: [PATCH 4/4] Updates & fixes --- assets/langs/ar-SA.json | 5 ++--- .../widgets/appointment_doctor_card.dart | 6 +++--- .../habib_wallet/habib_wallet_page.dart | 2 +- .../home/lakum_wallet_details.dart | 18 +++++++++++------- lib/widgets/common_bottom_sheet.dart | 6 +++--- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index ed554e97..d0321ace 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -123,7 +123,7 @@ "forgotFileNoTitle": "نسيت الملف الطبي", "enterNationalId": "يرجى إدخال رقم الهاتف المحمول ورقم الهوية", "profileInfo": "يرجى إدخال معلومات الملف الشخصي", - "submit": "بحث", + "submit": "تأكيد", "forgotDesc": "أدخل رقم الهاتف المحمول لاستلام رقم الملف الطبي عبر الرسائل القصيرة", "dob": "تاريخ الميلاد", "hijriDate": "التاريخ الهجري", @@ -1390,7 +1390,6 @@ "medicalFiles": "الملفات الطبية", "addANewFamilyMember": "اضافة", "viewInvoiceDetails": "عرض تفاصيل الفاتورة", - "outPatient": "مريض خارجي", "invoiceDetails": "تفاصيل الفاتورة", "sendingEmailPleaseWait": "جاري إرسال ال��ريد الإلكتروني، يرجى الانتظار...", "emailSentSuccessfullyMessage": "تم إرسال البريد الإلكتروني بنجاح.", @@ -1946,7 +1945,7 @@ "transactions": "المعاملات", "pharmacy": "الصيدلية", "visitsOrders": "الزيارات/الطلبات", - "earned": "حصل", + "earned": "مكتسب", "getParkingQR": "الحصول على رمز الاستجابة السريعة لوقوف السيارات", "cannotOpenThisFile": "لا يمكن فتح هذا الملف", "refundDetails": "تفاصيل الاسترداد", diff --git a/lib/presentation/appointments/widgets/appointment_doctor_card.dart b/lib/presentation/appointments/widgets/appointment_doctor_card.dart index f0dd2f5d..6e3f77d1 100644 --- a/lib/presentation/appointments/widgets/appointment_doctor_card.dart +++ b/lib/presentation/appointments/widgets/appointment_doctor_card.dart @@ -127,9 +127,9 @@ class AppointmentDoctorCard extends StatelessWidget { runSpacing: 6.h, children: [ AppCustomChipWidget( - labelText: (patientAppointmentHistoryResponseModel.clinicName!.length > 20 - ? '${patientAppointmentHistoryResponseModel.clinicName!.substring(0, 20)}...' - : patientAppointmentHistoryResponseModel.clinicName!), + labelText: ((patientAppointmentHistoryResponseModel.clinicName ?? "").length > 20 + ? '${(patientAppointmentHistoryResponseModel.clinicName ?? "").substring(0, 20)}...' + : (patientAppointmentHistoryResponseModel.clinicName ?? "")), labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), AppCustomChipWidget( diff --git a/lib/presentation/habib_wallet/habib_wallet_page.dart b/lib/presentation/habib_wallet/habib_wallet_page.dart index 07df55ea..2814a961 100644 --- a/lib/presentation/habib_wallet/habib_wallet_page.dart +++ b/lib/presentation/habib_wallet/habib_wallet_page.dart @@ -89,7 +89,7 @@ class _HabibWalletState extends State { "${appState.getAuthenticatedUser()!.firstName!} ${appState.getAuthenticatedUser()!.lastName!}" .toText19(isBold: true, color: Colors.white), "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId!}" - .toText14(isBold: true, color: AppColors.greyTextColor, isEnglishOnly: true), + .toText14(isBold: true, color: AppColors.greyTextColor), ], ).expanded, Utils.buildSvgWithAssets(icon: AppAssets.habiblogo, width: 24.h, height: 24.h, applyThemeColor: false), diff --git a/lib/presentation/home/lakum_wallet_details.dart b/lib/presentation/home/lakum_wallet_details.dart index d2ef15f4..bcd5cb3e 100644 --- a/lib/presentation/home/lakum_wallet_details.dart +++ b/lib/presentation/home/lakum_wallet_details.dart @@ -17,6 +17,7 @@ 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:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'dart:ui' as ui; class LakumWalletDetails extends StatelessWidget { const LakumWalletDetails({super.key}); @@ -239,10 +240,10 @@ class LakumWalletDetails extends StatelessWidget { return CustomButton( height: 46.h, icon: AppAssets.redeem_icon, - iconColor: AppColors.whiteColor, + iconColor: AppColors.textColor, iconSize: 24.h, backgroundColor: AppColors.habibPharmacyColor, - textColor: AppColors.whiteColor, + textColor: AppColors.textColor, text: LocaleKeys.redeem.tr(context: context), borderWidth: 0.w, fontWeight: FontWeight.w600, @@ -350,7 +351,10 @@ class LakumWalletDetails extends StatelessWidget { maxlines: 2, ), SizedBox(height: 2.h), - formattedDate.toText12(color: AppColors.greyTextColor), + Directionality( + textDirection: ui.TextDirection.ltr, + child: formattedDate.toText12(color: AppColors.greyTextColor), + ), ], ), ), @@ -363,10 +367,10 @@ class LakumWalletDetails extends StatelessWidget { isBold: true, color: transactionColor, ), - if (transaction.amount != null && transaction.amount! > 0) - "${transaction.amount?.toStringAsFixed(2) ?? "0.00"} SAR".toText11( - color: AppColors.greyTextColor, - ), + // if (transaction.amount != null && transaction.amount! > 0) + // "${transaction.amount?.toStringAsFixed(2) ?? "0.00"} SAR".toText11( + // color: AppColors.greyTextColor, + // ), ], ), ], diff --git a/lib/widgets/common_bottom_sheet.dart b/lib/widgets/common_bottom_sheet.dart index c3e78a6a..c86bc516 100644 --- a/lib/widgets/common_bottom_sheet.dart +++ b/lib/widgets/common_bottom_sheet.dart @@ -273,9 +273,9 @@ void showCommonBottomSheetWithoutHeight( if (navContext != null && Navigator.canPop(navContext)) { Navigator.of(navContext).pop(); } - if (callBackFunc != null) { - callBackFunc(); - } + // if (callBackFunc != null) { + // callBackFunc(); + // } }); } return SafeArea(