Flutter中添加AlertDialog后onDelete无法执行的问题求助
问题解决:AlertDialog中删除回调不执行的修复
你的问题出在没有调用onDelete函数——当前代码里只写了onDelete,这只是引用了函数对象,并没有触发执行。
修复步骤:
- 在弹窗Yes按钮的
onPressed回调里,把onDelete改为onDelete(),主动调用删除函数 - 给
alert函数的onDelete参数添加VoidCallback类型标注,让代码更规范
修改后的完整代码:
删除按钮部分:
Expanded( child: ElevatedButton.icon( icon: Icon(Icons.delete), label: Text('Delete'), onPressed: () => alert(context, onDelete), ), ),
弹窗函数部分:
void alert(BuildContext context, VoidCallback onDelete) { Widget yesButton = TextButton( child: Text("Yes"), onPressed: () { debugPrint('clicked'); onDelete(); // 这里添加括号执行函数 Navigator.pop(context); }, ); AlertDialog alert = AlertDialog( title: Text("Do you want to delete?"), content: Text("Are you sure you want to delete this item?"), actions: [yesButton], ); showDialog( context: context, builder: (BuildContext context) => alert, ); }
这样修改后,点击Yes按钮时就会正常触发删除逻辑,同时关闭弹窗。
内容的提问来源于stack exchange,提问作者ornubue
相关产品推荐
相关产品推荐

