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,
 | 
						|
                      ),
 | 
						|
                    ),
 | 
						|
                ],
 | 
						|
              ),
 | 
						|
            ),
 | 
						|
          );
 | 
						|
        }),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |