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 { final String? title; final String message; final bool showOKButton; final bool showCancel; final Function() onOkPressed; final Function()? onCancelPressed; const ExceptionBottomSheet({super.key, this.title, required this.message, this.showOKButton = true, this.showCancel = false, required this.onOkPressed, this.onCancelPressed}); @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: [ (title ?? 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, ), ), ], ), ), ); }), ), ); } }