|  |  |  | import 'package:easy_localization/easy_localization.dart'; | 
					
						
							|  |  |  | import 'package:flutter/material.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/extensions/route_extensions.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/presentation/my_family/widget/family_cards.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/services/navigation_service.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/theme/colors.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/widgets/bottomsheet/exception_bottom_sheet.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; | 
					
						
							|  |  |  | import 'package:hmg_patient_app_new/widgets/family_files/family_file_add_widget.dart'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | abstract class DialogService { | 
					
						
							|  |  |  |   Future<void> showErrorBottomSheet({String title = "", required String message, Function()? onOkPressed, Function()? onCancelPressed}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> showExceptionBottomSheet({required String message, required Function() onOkPressed, Function()? onCancelPressed}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> showCommonBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> showFamilyBottomSheetWithoutH( | 
					
						
							|  |  |  |       {String? label, required String message, required Function(FamilyFileResponseModelLists response) onSwitchPress, required List<FamilyFileResponseModelLists> profiles}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> showFamilyBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> showPhoneNumberPickerSheet({String? label, String? message, required Function() onSMSPress, required Function() onWhatsappPress}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Future<void> showAddFamilyFileSheet({String? label, String? message, required Function() onVerificationPress}); | 
					
						
							|  |  |  | // TODO : Need to be Fixed showPhoneNumberPickerSheet ( From Login ADn Signup Bottom Sheet Move Here
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DialogServiceImp implements DialogService { | 
					
						
							|  |  |  |   final NavigationService navigationService; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   bool _isErrorSheetShowing = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   DialogServiceImp({required this.navigationService}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> showErrorBottomSheet({String title = "", required String message, Function()? onOkPressed, Function()? onCancelPressed}) async { | 
					
						
							|  |  |  |     if (_isErrorSheetShowing) return; | 
					
						
							|  |  |  |     final context = navigationService.navigatorKey.currentContext; | 
					
						
							|  |  |  |     if (context == null) return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     _isErrorSheetShowing = true; | 
					
						
							|  |  |  |     await showModalBottomSheet( | 
					
						
							|  |  |  |       context: context, | 
					
						
							|  |  |  |       isScrollControlled: false, | 
					
						
							|  |  |  |       shape: const RoundedRectangleBorder( | 
					
						
							|  |  |  |         borderRadius: BorderRadius.vertical(top: Radius.circular(16)), | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |       builder: (_) => ExceptionBottomSheet( | 
					
						
							|  |  |  |         // title: title,
 | 
					
						
							|  |  |  |         message: message, | 
					
						
							|  |  |  |         showCancel: onCancelPressed != null ? true : false, | 
					
						
							|  |  |  |         onOkPressed: () { | 
					
						
							|  |  |  |           if (onOkPressed != null) { | 
					
						
							|  |  |  |             onOkPressed(); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           context.pop(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         onCancelPressed: () { | 
					
						
							|  |  |  |           if (onCancelPressed != null) { | 
					
						
							|  |  |  |             onCancelPressed(); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           context.pop(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     _isErrorSheetShowing = false; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> showExceptionBottomSheet({required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { | 
					
						
							|  |  |  |     final context = navigationService.navigatorKey.currentContext; | 
					
						
							|  |  |  |     if (context == null) return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await showModalBottomSheet( | 
					
						
							|  |  |  |       context: context, | 
					
						
							|  |  |  |       isScrollControlled: false, | 
					
						
							|  |  |  |       shape: const RoundedRectangleBorder( | 
					
						
							|  |  |  |         borderRadius: BorderRadius.vertical(top: Radius.circular(16)), | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |       builder: (_) => ExceptionBottomSheet( | 
					
						
							|  |  |  |         message: message, | 
					
						
							|  |  |  |         showCancel: onCancelPressed != null ? true : false, | 
					
						
							|  |  |  |         onOkPressed: onOkPressed, | 
					
						
							|  |  |  |         onCancelPressed: () { | 
					
						
							|  |  |  |           if (onCancelPressed != null) { | 
					
						
							|  |  |  |             Navigator.of(context).pop(); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> showCommonBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}) async { | 
					
						
							|  |  |  |     final context = navigationService.navigatorKey.currentContext; | 
					
						
							|  |  |  |     if (context == null) return; | 
					
						
							|  |  |  |     showCommonBottomSheetWithoutHeight(context, | 
					
						
							|  |  |  |         title: label ?? "", child: exceptionBottomSheetWidget(context: context, message: message, onOkPressed: onOkPressed, onCancelPressed: onCancelPressed), callBackFunc: () {}); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> showFamilyBottomSheetWithoutH( | 
					
						
							|  |  |  |       {String? label, required String message, required Function(FamilyFileResponseModelLists response) onSwitchPress, required List<FamilyFileResponseModelLists> profiles}) async { | 
					
						
							|  |  |  |     final context = navigationService.navigatorKey.currentContext; | 
					
						
							|  |  |  |     if (context == null) return; | 
					
						
							|  |  |  |     showCommonBottomSheetWithoutHeight(context, | 
					
						
							|  |  |  |         title: label ?? "", | 
					
						
							|  |  |  |         child: FamilyCards( | 
					
						
							|  |  |  |           profiles: profiles, | 
					
						
							|  |  |  |           onSelect: (FamilyFileResponseModelLists profile) { | 
					
						
							|  |  |  |             onSwitchPress(profile); | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           onRemove: (FamilyFileResponseModelLists profile) {}, | 
					
						
							|  |  |  |           isShowDetails: false, | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |         callBackFunc: () {}); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> showFamilyBottomSheetWithoutHWithChild({String? label, required String message, Widget? child, required Function() onOkPressed, Function()? onCancelPressed}) async { | 
					
						
							|  |  |  |     final context = navigationService.navigatorKey.currentContext; | 
					
						
							|  |  |  |     if (context == null) return; | 
					
						
							|  |  |  |     showCommonBottomSheetWithoutHeight( | 
					
						
							|  |  |  |       context, | 
					
						
							|  |  |  |       title: label ?? "", | 
					
						
							|  |  |  |       child: child ?? SizedBox(), | 
					
						
							|  |  |  |       callBackFunc: () {}, | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> showPhoneNumberPickerSheet({String? label, String? message, required Function() onSMSPress, required Function() onWhatsappPress}) async { | 
					
						
							|  |  |  |     final context = navigationService.navigatorKey.currentContext; | 
					
						
							|  |  |  |     if (context == null) return; | 
					
						
							|  |  |  |     showCommonBottomSheetWithoutHeight(context, | 
					
						
							|  |  |  |         title: label ?? "", child: showPhoneNumberPickerWidget(context: context, message: message, onSMSPress: onSMSPress, onWhatsappPress: onWhatsappPress), callBackFunc: () {}); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @override | 
					
						
							|  |  |  |   Future<void> showAddFamilyFileSheet({String? label, String? message, required Function() onVerificationPress}) async { | 
					
						
							|  |  |  |     final context = navigationService.navigatorKey.currentContext; | 
					
						
							|  |  |  |     if (context == null) return; | 
					
						
							|  |  |  |     showCommonBottomSheetWithoutHeight(context, | 
					
						
							|  |  |  |         title: label ?? "", | 
					
						
							|  |  |  |         child: FamilyFileAddWidget(() { | 
					
						
							|  |  |  |           onVerificationPress(); | 
					
						
							|  |  |  |         }, message ?? ""), | 
					
						
							|  |  |  |         callBackFunc: () {}); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Widget exceptionBottomSheetWidget({required BuildContext context, required String message, required Function() onOkPressed, Function()? onCancelPressed}) { | 
					
						
							|  |  |  |   return Column( | 
					
						
							|  |  |  |     children: [ | 
					
						
							|  |  |  |       (message).toText16(isBold: false, color: AppColors.textColor), | 
					
						
							|  |  |  |       SizedBox(height: 10.h), | 
					
						
							|  |  |  |       SizedBox(height: 24.h), | 
					
						
							|  |  |  |       if (onCancelPressed != null) | 
					
						
							|  |  |  |         Row( | 
					
						
							|  |  |  |           children: [ | 
					
						
							|  |  |  |             Expanded( | 
					
						
							|  |  |  |               child: CustomButton( | 
					
						
							|  |  |  |                 text: LocaleKeys.cancel.tr(), | 
					
						
							|  |  |  |                 onPressed: () { | 
					
						
							|  |  |  |                   Navigator.of(context).pop(); | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 backgroundColor: AppColors.secondaryLightRedColor, | 
					
						
							|  |  |  |                 borderColor: AppColors.secondaryLightRedColor, | 
					
						
							|  |  |  |                 textColor: AppColors.primaryRedColor, | 
					
						
							|  |  |  |                 icon: AppAssets.cancel, | 
					
						
							|  |  |  |                 iconColor: AppColors.primaryRedColor, | 
					
						
							|  |  |  |               ), | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             SizedBox(width: 5.h), | 
					
						
							|  |  |  |             Expanded( | 
					
						
							|  |  |  |               child: CustomButton( | 
					
						
							|  |  |  |                 text: LocaleKeys.confirm.tr(), | 
					
						
							|  |  |  |                 onPressed: onOkPressed, | 
					
						
							|  |  |  |                 backgroundColor: AppColors.bgGreenColor, | 
					
						
							|  |  |  |                 borderColor: AppColors.bgGreenColor, | 
					
						
							|  |  |  |                 textColor: Colors.white, | 
					
						
							|  |  |  |                 icon: AppAssets.confirm, | 
					
						
							|  |  |  |               ), | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |       if (onCancelPressed == null) | 
					
						
							|  |  |  |         Padding( | 
					
						
							|  |  |  |           padding: EdgeInsets.only(bottom: 10.h), | 
					
						
							|  |  |  |           child: CustomButton( | 
					
						
							|  |  |  |             text: LocaleKeys.ok.tr(), | 
					
						
							|  |  |  |             onPressed: (onCancelPressed == null) | 
					
						
							|  |  |  |                 ? () { | 
					
						
							|  |  |  |                     context.pop(); | 
					
						
							|  |  |  |                   } | 
					
						
							|  |  |  |                 : onOkPressed, | 
					
						
							|  |  |  |             backgroundColor: AppColors.primaryRedColor, | 
					
						
							|  |  |  |             borderColor: AppColors.primaryRedBorderColor, | 
					
						
							|  |  |  |             textColor: Colors.white, | 
					
						
							|  |  |  |             icon: AppAssets.confirm, | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |     ], | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Widget showPhoneNumberPickerWidget({required BuildContext context, String? message, required Function() onSMSPress, required Function() onWhatsappPress}) { | 
					
						
							|  |  |  |   return StatefulBuilder(builder: (BuildContext context, StateSetter setModalState) { | 
					
						
							|  |  |  |     return Column( | 
					
						
							|  |  |  |       children: [ | 
					
						
							|  |  |  |         (message ?? "").toText16(isBold: false, color: AppColors.textColor), | 
					
						
							|  |  |  |         SizedBox(height: 10.h), | 
					
						
							|  |  |  |         Padding( | 
					
						
							|  |  |  |           padding: EdgeInsets.only(bottom: 10.h), | 
					
						
							|  |  |  |           child: CustomButton( | 
					
						
							|  |  |  |             text: LocaleKeys.sendOTPSMS.tr(), | 
					
						
							|  |  |  |             onPressed: onSMSPress, | 
					
						
							|  |  |  |             backgroundColor: AppColors.primaryRedColor, | 
					
						
							|  |  |  |             borderColor: AppColors.primaryRedBorderColor, | 
					
						
							|  |  |  |             textColor: AppColors.whiteColor, | 
					
						
							|  |  |  |             icon: AppAssets.message, | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |         Row( | 
					
						
							|  |  |  |           crossAxisAlignment: CrossAxisAlignment.center, | 
					
						
							|  |  |  |           mainAxisAlignment: MainAxisAlignment.center, | 
					
						
							|  |  |  |           children: [ | 
					
						
							|  |  |  |             Padding( | 
					
						
							|  |  |  |               padding: EdgeInsets.symmetric(horizontal: 8.h), | 
					
						
							|  |  |  |               child: LocaleKeys.oR.tr().toText16(color: AppColors.textColor), | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |         Padding( | 
					
						
							|  |  |  |           padding: EdgeInsets.only(bottom: 10.h, top: 10.h), | 
					
						
							|  |  |  |           child: CustomButton( | 
					
						
							|  |  |  |             text: LocaleKeys.sendOTPWHATSAPP.tr(), | 
					
						
							|  |  |  |             onPressed: onWhatsappPress, | 
					
						
							|  |  |  |             backgroundColor: Colors.white, | 
					
						
							|  |  |  |             borderColor: AppColors.borderOnlyColor, | 
					
						
							|  |  |  |             textColor: AppColors.textColor, | 
					
						
							|  |  |  |             icon: AppAssets.whatsapp, | 
					
						
							|  |  |  |             iconColor: null, | 
					
						
							|  |  |  |           ), | 
					
						
							|  |  |  |         ), | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     //return Padding(
 | 
					
						
							|  |  |  |     //       padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
 | 
					
						
							|  |  |  |     //       child: SingleChildScrollView(
 | 
					
						
							|  |  |  |     //         child: GenericBottomSheet(
 | 
					
						
							|  |  |  |     //           countryCode: authViewModel.selectedCountrySignup.countryCode,
 | 
					
						
							|  |  |  |     //           initialPhoneNumber: "",
 | 
					
						
							|  |  |  |     //           textController: authViewModel.phoneNumberController,
 | 
					
						
							|  |  |  |     //           isEnableCountryDropdown: true,
 | 
					
						
							|  |  |  |     //           onCountryChange: authViewModel.onCountryChange,
 | 
					
						
							|  |  |  |     //           onChange: authViewModel.onPhoneNumberChange,
 | 
					
						
							|  |  |  |     //           buttons: [
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     //           ],
 | 
					
						
							|  |  |  |     //         ),
 | 
					
						
							|  |  |  |     //       ),
 | 
					
						
							|  |  |  |     //     );
 | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Widget familyMemberAddWidget() {
 | 
					
						
							|  |  |  | //   AuthenticationViewModel authVm = getIt.get<AuthenticationViewModel>();
 | 
					
						
							|  |  |  | //   return showCommonBottomSheetWithoutHeight(context,
 | 
					
						
							|  |  |  | //       title: "Add Family Member".needTranslation,
 | 
					
						
							|  |  |  | //       useSafeArea: true,
 | 
					
						
							|  |  |  | //       child:
 | 
					
						
							|  |  |  | //       callBackFunc: () {});
 | 
					
						
							|  |  |  | // }
 |