Flutter中如何实现点击Yes/No按钮后自动关闭的对话框?
Flutter 确认对话框(Yes/No)实现方案
你的代码存在两个核心问题:
- 直接返回
returnValue无效:showDialog是异步操作,函数会在对话框弹出后立即返回初始的false,无法获取用户的实际选择结果 - 未关闭对话框:按钮点击后仅修改变量,没有调用关闭对话框的方法
以下是修正后的完整实现:
Future<bool> showAlertDialog(BuildContext context, String message) async { // 弹出对话框并等待用户选择结果 return await showDialog( context: context, barrierDismissible: false, // 点击外部不关闭对话框,可选配置 builder: (BuildContext context) { return AlertDialog( title: const Text("是否继续操作?"), content: Text(message), actions: [ ElevatedButton( child: const Text("取消"), onPressed: () { // 关闭对话框并返回false Navigator.pop(context, false); }, ), ElevatedButton( child: const Text("继续"), onPressed: () { // 关闭对话框并返回true Navigator.pop(context, true); }, ), ], ); }, ) ?? false; // 若用户通过返回键等方式关闭,默认返回false }
使用方式示例
// 在需要调用的方法前添加async关键字 bool shouldContinue = await showAlertDialog(context, "此操作将删除数据,确认继续?"); if (shouldContinue) { // 用户选择继续,执行对应逻辑 } else { // 用户选择取消,执行对应逻辑 }
关键说明
- 用
Future<bool>作为返回类型,配合async/await等待用户的选择结果 - 通过
Navigator.pop(context, 返回值)同时完成关闭对话框和传递选择结果两个操作 barrierDismissible: false可强制用户必须选择按钮才能关闭对话框,可根据需求调整
内容的提问来源于stack exchange,提问作者PrertoQuebas
相关产品推荐
相关产品推荐

