import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:tangheem/classes/colors.dart';
import 'package:tangheem/extensions/int_extensions.dart';
import 'package:tangheem/extensions/string_extensions.dart';
import 'package:tangheem/extensions/widget_extensions.dart';

class GeneralDialog extends StatelessWidget {
  final String message;
  final String buttonTitle;
  final VoidCallback onTap;
  final bool showCancelButton;
  final Color backgroundColor;
  final Color buttonBorderColor;

  GeneralDialog({Key key, this.message, this.buttonTitle, this.onTap, this.showCancelButton = false, this.backgroundColor,this.buttonBorderColor}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return BackdropFilter(
      filter: ImageFilter.blur(sigmaX: 4, sigmaY: 4),
      child: Dialog(
        insetPadding: EdgeInsets.symmetric(horizontal: 60.0, vertical: 24.0),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(25),
        ),
        elevation: 0,
        backgroundColor: Colors.transparent,
        child: Stack(
          children: [
            Container(
              width: MediaQuery.of(context).size.width * 239 / 375,
              decoration: BoxDecoration(
                color: backgroundColor ?? ColorConsts.brownLightColor.withOpacity(0.60),
                borderRadius: BorderRadius.circular(16),
              ),
              padding: EdgeInsets.symmetric(vertical: 24, horizontal: 16),
              margin: EdgeInsets.only(top: 11),
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  (message ?? "للحصول على تجربة أفضل ، يرجى إمالة هاتفك واستخدام التطبيق في الوضع الأفقي").toText(17, textAlign: TextAlign.center, height: 22),
                  18.height,
                  Row(
                    mainAxisSize: MainAxisSize.min,
                    children: [
                      if (showCancelButton)
                        Expanded(
                          child: SizedBox(
                            width: double.infinity,
                            height: 36,
                            child: TextButton(
                              onPressed: () => Navigator.pop(context),
                              style: TextButton.styleFrom(
                                primary: Colors.black87,
                                padding: EdgeInsets.all(2),
                                backgroundColor: ColorConsts.textHintGrey,
                                textStyle: TextStyle(fontSize: 14, fontFamily: "DroidKufi"),
                                shape: RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(6.0),
                                ),
                              ),
                              child: Text("لا"),
                            ),
                          ),
                        ),
                      if (showCancelButton) SizedBox(width: 16),
                      SizedBox(
                        width: double.infinity,
                        height: 36,
                        child: TextButton(
                          onPressed: onTap ?? () => Navigator.pop(context),
                          style: TextButton.styleFrom(
                            //      primary: Colors.white,
                            padding: EdgeInsets.all(0),
                            backgroundColor: Colors.transparent,
                            textStyle: TextStyle(fontSize: 14, fontFamily: "DroidKufi"),
                            shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(25.0), side: BorderSide(color: buttonBorderColor ?? Colors.white, width: 2)),
                          ),
                          child: (buttonTitle ?? "تأكيد").toText(14),
                        ),
                      ).paddingOnly(left: 50, right: 50).expanded,
                    ],
                  ),
                ],
              ),
            ),
            Container(
              height: 22,
              width: 22,
              margin: EdgeInsets.only(left: 16),
              decoration: BoxDecoration(shape: BoxShape.circle, color: ColorConsts.brownLightColor),
              child: Icon(
                Icons.clear,
                size: 16,
                color: Colors.white,
              ),
            ).onPress(() => Navigator.pop(context)),
          ],
        ),
      ),
    );
  }
}
