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