/// 对话框工具:统一封装弹窗(扫码、确认、通用) library; import 'package:flutter/material.dart'; /// 打开对话框 /// - [builder] 构建弹窗内容 /// - [onSubmit] 点确认/提交时回调,返回 true 表示立即关闭,false 保持打开 /// - [confirmText] 确认按钮文案 /// - [barrierDismissible] 点击遮罩是否可关闭 Future openDialog( BuildContext context, { required WidgetBuilder builder, bool Function()? onSubmit, String? confirmText, bool barrierDismissible = true, }) { return showDialog( context: context, barrierDismissible: barrierDismissible, builder: (dialogContext) { return AlertDialog( content: builder(dialogContext), actions: onSubmit == null ? null : [ TextButton( onPressed: () { if (onSubmit() == true) { Navigator.of(dialogContext).pop(); } }, child: Text(confirmText ?? '确定'), ), ], ); }, ); } /// 简单确认弹窗 Future showConfirmDialog( BuildContext context, { required String title, required String message, String confirmText = '确定', String cancelText = '取消', }) async { final result = await showDialog( context: context, builder: (dialogContext) => AlertDialog( title: Text(title), content: Text(message), actions: [ TextButton( onPressed: () => Navigator.of(dialogContext).pop(false), child: Text(cancelText), ), TextButton( onPressed: () => Navigator.of(dialogContext).pop(true), child: Text(confirmText), ), ], ), ); return result ?? false; }