import 'package:flutter/material.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
import 'package:hmg_patient_app_new/core/app_export.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/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';

void showCommonBottomSheet(BuildContext context,
    {required Widget child,
    Function(String?)? callBackFunc,
    String? title,
    required double height,
    bool isCloseButtonVisible = true,
    bool isFullScreen = true,
    bool isDismissible = true,
    bool isSuccessDialog = false}) {
  showModalBottomSheet<String>(
      sheetAnimationStyle: AnimationStyle(
        duration: Duration(milliseconds: 500), // Custom animation duration
        reverseDuration: Duration(milliseconds: 300), // Custom reverse animation duration
      ),
      context: context,
      isScrollControlled: true,
      showDragHandle: false,
      isDismissible: isDismissible,
      backgroundColor: isSuccessDialog ? AppColors.whiteColor : AppColors.scaffoldBgColor,
      builder: (BuildContext context) {
        return Container(
          height: height,
          decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.scaffoldBgColor, borderRadius: 24.h),
          child: ButtonSheetContent(
            title: title!,
            isCloseButtonVisible: isCloseButtonVisible,
            isFullScreen: isFullScreen,
            child: child,
          ),
        );
      }).then((value) {
    if (value != null) {
      callBackFunc!(value);
    }
  });
}

class ButtonSheetContent extends StatelessWidget {
  final Widget child;
  final String title;
  final bool isCloseButtonVisible;
  final bool isFullScreen;

  const ButtonSheetContent({super.key, required this.child, required this.isCloseButtonVisible, required this.title, required this.isFullScreen});

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      children: [
        // SizedBox(
        //   height: 20.h,
        // ),
        // Center(
        //   child: Container(
        //     margin: const EdgeInsets.only(top: 18, bottom: 12),
        //     height: 4,
        //     width: 40.h,
        //     decoration: BoxDecoration(
        //       color: Colors.grey[400],
        //       borderRadius: BorderRadius.circular(2),
        //     ),
        //   ),
        // ),

        // Close button
        isCloseButtonVisible && isFullScreen
            ? Column(children: [
                SizedBox(
                  height: 40.h,
                ),
                Padding(
                  padding: EdgeInsets.symmetric(
                    horizontal: 16,
                  ),
                  child: Utils.buildSvgWithAssets(icon: AppAssets.closeBottomNav, width: 32, height: 32).onPress(() {
                    Navigator.of(context).pop();
                  }),
                )
              ])
            : SizedBox(),

        isFullScreen
            ? Column(
                children: [
                  SizedBox(height: 20.h),
                  Padding(padding: EdgeInsets.symmetric(horizontal: 16.h), child: title.toText24(isBold: true)),
                  SizedBox(height: 16.h),
                ],
              )
            : SizedBox(),

        Expanded(child: child)
      ],
    );
  }
}

void showCommonBottomSheetWithoutHeight(
    BuildContext context, {
      required Widget child,
      required VoidCallback callBackFunc,
      String title = "",
      bool isCloseButtonVisible = true,
      bool isFullScreen = true,
      bool isDismissible = true,
      Widget? titleWidget,
      bool useSafeArea = false,
    }) {
  showModalBottomSheet<String>(
    sheetAnimationStyle: AnimationStyle(
      duration: Duration(milliseconds: 500),
      reverseDuration: Duration(milliseconds: 300),
    ),
    context: context,
    isScrollControlled: true,
    showDragHandle: false,
    isDismissible: isDismissible,
    backgroundColor: AppColors.bottomSheetBgColor,
    useSafeArea: useSafeArea,
    builder: (BuildContext context) {
      return SafeArea(
        top: false,
        left: false,
        right: false,
        child: Padding(
          padding: EdgeInsets.only(
            bottom: MediaQuery.of(context).viewInsets.bottom,
          ),
          child: SingleChildScrollView(
            physics: ClampingScrollPhysics(),
            child: isCloseButtonVisible
                ? Container(
              padding: EdgeInsets.only(
                left: 24,
                top: 24,
                right: 24,
                bottom: 12,
              ),
              decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
                color: AppColors.bottomSheetBgColor,
                borderRadius: 24.h,
              ),
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: [
                      titleWidget ??
                          Expanded(
                            child: title.toText20(weight: FontWeight.w600),
                          ),
                      Utils.buildSvgWithAssets(
                        icon: AppAssets.close_bottom_sheet_icon,
                        iconColor: Color(0xff2B353E),
                      ).onPress(() {
                        Navigator.of(context).pop();
                      }),
                    ],
                  ),
                  SizedBox(height: 16.h),
                  child,
                ],
              ),
            )
                : child,
          ),
        ),
      );
    },
  ).then((value) {
    callBackFunc();
  });
}

// void showCommonBottomSheetWithoutHeight(
//   BuildContext context, {
//   required Widget child,
//   required VoidCallback callBackFunc,
//   String title = "",
//   bool isCloseButtonVisible = true,
//   bool isFullScreen = true,
//   bool isDismissible = true,
//   Widget? titleWidget,
//   bool useSafeArea = false,
//
// }) {
//   showModalBottomSheet<String>(
//       sheetAnimationStyle: AnimationStyle(
//         duration: Duration(milliseconds: 500), // Custom animation duration
//         reverseDuration: Duration(milliseconds: 300), // Custom reverse animation duration
//       ),
//       context: context,
//       isScrollControlled: true,
//       showDragHandle: false,
//       isDismissible: isDismissible,
//       backgroundColor: AppColors.bottomSheetBgColor,
//       useSafeArea: useSafeArea,
//       builder: (BuildContext context) {
//         return SafeArea(
//           top: false,
//           left: false,
//           right: false,
//           child: isCloseButtonVisible
//               ? Container(
//                   padding: EdgeInsets.only(left: 24, top: 24, right: 24, bottom: 12),
//                   decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.bottomSheetBgColor, borderRadius: 24.h),
//                   child: Column(
//                     mainAxisSize: MainAxisSize.min,
//                     spacing: 16.h,
//                     children: [
//                       Row(
//                         mainAxisAlignment: MainAxisAlignment.spaceBetween,
//                         crossAxisAlignment: CrossAxisAlignment.center,
//                         children: [
//                           titleWidget ?? Expanded(child: title.toText20(weight: FontWeight.w600)),
//                           Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon, iconColor: Color(0xff2B353E)).onPress(() {
//                             Navigator.of(context).pop();
//                           }),
//                         ],
//                       ),
//                       child,
//                     ],
//                   ))
//               : child,
//         );
//       }).then((value) {
//     callBackFunc();
//   });
// }
