You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			112 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Dart
		
	
| import 'dart:io';
 | |
| 
 | |
| 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/core/utils/utils.dart';
 | |
| import 'package:hmg_patient_app_new/extensions/string_extensions.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';
 | |
| 
 | |
| class ExceptionBottomSheet extends StatelessWidget {
 | |
|   String message;
 | |
|   bool showOKButton;
 | |
|   bool showCancel;
 | |
|   Function() onOkPressed;
 | |
|   Function()? onCancelPressed;
 | |
| 
 | |
|   ExceptionBottomSheet({Key? key, required this.message, this.showOKButton = true, this.showCancel = false, required this.onOkPressed, this.onCancelPressed}) : super(key: key);
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     return SafeArea(
 | |
|       bottom: Platform.isIOS ? false : true, // Adjust for iOS to avoid bottom padding
 | |
|       child: GestureDetector(
 | |
|         onTap: () {
 | |
|           FocusScope.of(context).unfocus(); // Dismiss the keyboard when tapping outside
 | |
|         },
 | |
|         child: Builder(builder: (context) {
 | |
|           return Directionality(
 | |
|             textDirection: Directionality.of(context),
 | |
|             child: Container(
 | |
|               padding: EdgeInsets.all(24.h),
 | |
|               decoration: BoxDecoration(
 | |
|                 color: Color(0xFFF8F8FA),
 | |
|                 borderRadius: const BorderRadius.vertical(top: Radius.circular(16)),
 | |
|               ),
 | |
|               child: Column(
 | |
|                 mainAxisSize: MainAxisSize.min,
 | |
|                 mainAxisAlignment: MainAxisAlignment.start,
 | |
|                 crossAxisAlignment: CrossAxisAlignment.stretch,
 | |
|                 children: [
 | |
|                   Row(
 | |
|                     mainAxisAlignment: MainAxisAlignment.spaceBetween,
 | |
|                     children: [
 | |
|                       LocaleKeys.notice.tr().toText28(),
 | |
|                       InkWell(
 | |
|                         onTap: () {
 | |
|                           Navigator.of(context).pop();
 | |
|                         },
 | |
|                         child: Utils.buildSvgWithAssets(icon: AppAssets.cross_circle),
 | |
|                       )
 | |
|                     ],
 | |
|                   ),
 | |
|                   SizedBox(height: 10.h),
 | |
|                   (message ?? "").toText16(isBold: false, color: AppColors.textColor),
 | |
|                   SizedBox(height: 10.h),
 | |
|                   SizedBox(height: 24.h),
 | |
|                   if (showOKButton && showCancel)
 | |
|                     Row(
 | |
|                       children: [
 | |
|                         Expanded(
 | |
|                           child: CustomButton(
 | |
|                             text: LocaleKeys.cancel.tr(),
 | |
|                             onPressed: onCancelPressed != null
 | |
|                                 ? onCancelPressed!
 | |
|                                 : () {
 | |
|                                     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: showCancel ? LocaleKeys.confirm.tr() : LocaleKeys.ok.tr(),
 | |
|                             onPressed: onOkPressed,
 | |
|                             backgroundColor: AppColors.bgGreenColor,
 | |
|                             borderColor: AppColors.bgGreenColor,
 | |
|                             textColor: Colors.white,
 | |
|                             icon: AppAssets.confirm,
 | |
|                           ),
 | |
|                         ),
 | |
|                       ],
 | |
|                     ),
 | |
|                   if (showOKButton && !showCancel)
 | |
|                     Padding(
 | |
|                       padding: EdgeInsets.only(bottom: 10.h),
 | |
|                       child: CustomButton(
 | |
|                         text: LocaleKeys.ok.tr(),
 | |
|                         onPressed: onOkPressed,
 | |
|                         backgroundColor: AppColors.primaryRedColor,
 | |
|                         borderColor: AppColors.primaryRedBorderColor,
 | |
|                         textColor: Colors.white,
 | |
|                         icon: AppAssets.confirm,
 | |
|                       ),
 | |
|                     ),
 | |
|                 ],
 | |
|               ),
 | |
|             ),
 | |
|           );
 | |
|         }),
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 |