import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:keyboard/utils/common_expand.dart'; import '../resource/colors.gen.dart'; import '../utils/styles.dart'; class CommonAlertDialog { static const String _tag = "CommonAlertDialog"; static void show( {required Widget titleWidget, required Widget descWidget, required String cancelText, required String confirmText, required VoidCallback cancelOnTap, required VoidCallback confirmOnTap, String tag = _tag}) { SmartDialog.show( tag: _tag, builder: (_) { return _CommonAlertDialog( titleWidget: titleWidget, descWidget: descWidget, cancelText: cancelText, confirmText: confirmText, cancelOnTap: cancelOnTap, confirmOnTap: confirmOnTap); }); } static void dismiss({String tag = _tag}) { SmartDialog.dismiss(tag: _tag); } } class _CommonAlertDialog extends Dialog { final Widget titleWidget; final Widget descWidget; final String cancelText; final String confirmText; final VoidCallback cancelOnTap; final VoidCallback confirmOnTap; const _CommonAlertDialog({ required this.titleWidget, required this.descWidget, required this.cancelText, required this.confirmText, required this.cancelOnTap, required this.confirmOnTap, }); @override Widget build(BuildContext context) { return Container( margin: EdgeInsets.symmetric(horizontal: 33.w), decoration: ShapeDecoration( color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.r), ), ), padding: EdgeInsets.symmetric( horizontal: 16.w, vertical: 24.w, ), child: IntrinsicHeight( child: Column( children: [ titleWidget, SizedBox(height: 20.h), descWidget, SizedBox(height: 20.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ GestureDetector( onTap: () => cancelOnTap(), child: Container( height: 40.h, width: 128.w, alignment: Alignment.center, decoration: ShapeDecoration( color: const Color(0xFFF5F4F9), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(50.r), ), ), child: Center( child: Text(cancelText, style: Styles.getTextStyleBlack102W500(16.sp), ), ), ), ), GestureDetector( onTap: () => confirmOnTap(), child: Container( height: 40.h, width: 128.r, alignment: Alignment.center, decoration: Styles.getActivateButtonDecoration( 50.r, ), child: Center( child: Text(confirmText, style: Styles.getTextStyleWhiteW500(16.sp),), ), ), ), ], ), ], ), ), ); } }