import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:location/resource/assets.gen.dart'; import 'package:location/utils/common_style.dart'; class CommonConfirmDialog { static const String _tag = "CommonConfirmDialog"; static void show( {required Widget titleWidget, required Widget descWidget, required String confirmText, VoidCallback? cancelOnTap, required VoidCallback confirmOnTap, String tag = _tag}) { SmartDialog.show( tag: _tag, builder: (_) { return _CommonConfirmDialog( titleWidget: titleWidget, descWidget: descWidget, confirmText: confirmText, cancelOnTap: cancelOnTap, confirmOnTap: confirmOnTap); }); } static void dismiss({String tag = _tag}) { SmartDialog.dismiss(tag: _tag); } } class _CommonConfirmDialog extends Dialog { final Widget titleWidget; final Widget descWidget; final String confirmText; final VoidCallback? cancelOnTap; final VoidCallback confirmOnTap; const _CommonConfirmDialog({ required this.titleWidget, required this.descWidget, required this.confirmText, this.cancelOnTap, required this.confirmOnTap, }); @override Widget build(BuildContext context) { return Container( width: 300.w, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20.w), ), child: IntrinsicHeight( child: Stack( children: [ Center( child: Column( children: [ SizedBox(height: 27.w), titleWidget, SizedBox(height: 15.w), Container( margin: EdgeInsets.symmetric(horizontal: 28.w), child: descWidget, ), SizedBox(height: 31.w), GestureDetector( onTap: () { CommonConfirmDialog.dismiss(); confirmOnTap(); }, child: Container( width: 229.w, height: 43.w, decoration: getPrimaryBtnDecoration(46.w), child: Center( child: Text(confirmText, style: TextStyle( fontSize: 14.sp, color: Colors.white)))), ), SizedBox(height: 20.w), ], ), ), Positioned( top: 12.w, right: 12.w, child: GestureDetector( onTap: () { CommonConfirmDialog.dismiss(); cancelOnTap?.call(); }, child: Assets.images.iconDialogClose .image(width: 20.w, height: 20.w))) ], ), ), ); } }