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