|
|
@@ -0,0 +1,120 @@
|
|
|
+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/colors.gen.dart';
|
|
|
+import 'package:location/utils/common_expand.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() {
|
|
|
+ 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 IntrinsicHeight(
|
|
|
+ child: Container(
|
|
|
+ width: 300.w,
|
|
|
+ decoration: BoxDecoration(
|
|
|
+ color: Colors.white,
|
|
|
+ borderRadius: BorderRadius.circular(20.w),
|
|
|
+ ),
|
|
|
+ child: Column(
|
|
|
+ children: [
|
|
|
+ SizedBox(height: 27.w),
|
|
|
+ titleWidget,
|
|
|
+ SizedBox(height: 15.w),
|
|
|
+ Container(
|
|
|
+ margin: EdgeInsets.symmetric(horizontal: 28.w),
|
|
|
+ child: descWidget,
|
|
|
+ ),
|
|
|
+ SizedBox(height: 32.w),
|
|
|
+ Row(
|
|
|
+ mainAxisAlignment: MainAxisAlignment.center,
|
|
|
+ children: [
|
|
|
+ GestureDetector(
|
|
|
+ onTap: () => cancelOnTap(),
|
|
|
+ child: Container(
|
|
|
+ width: 109.w,
|
|
|
+ height: 43.w,
|
|
|
+ decoration: BoxDecoration(
|
|
|
+ borderRadius: BorderRadius.all(Radius.circular(57.w)),
|
|
|
+ border: Border.all(color: ColorName.black15, width: 1.w),
|
|
|
+ ),
|
|
|
+ child: Center(
|
|
|
+ child: Text(cancelText,
|
|
|
+ style: TextStyle(
|
|
|
+ fontSize: 14.sp,
|
|
|
+ color: '#333333'.color,
|
|
|
+ fontWeight: FontWeight.bold)),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ SizedBox(width: 30.w),
|
|
|
+ GestureDetector(
|
|
|
+ onTap: () => confirmOnTap(),
|
|
|
+ child: Container(
|
|
|
+ width: 109.w,
|
|
|
+ height: 43.w,
|
|
|
+ decoration: BoxDecoration(
|
|
|
+ color: ColorName.colorPrimary,
|
|
|
+ borderRadius: BorderRadius.all(Radius.circular(57.w)),
|
|
|
+ ),
|
|
|
+ child: Center(
|
|
|
+ child: Text(confirmText,
|
|
|
+ style: TextStyle(
|
|
|
+ fontSize: 14.sp,
|
|
|
+ color: Colors.white,
|
|
|
+ fontWeight: FontWeight.bold)),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ SizedBox(height: 20.w),
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ }
|
|
|
+}
|