You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中添加AlertDialog后onDelete无法执行的问题求助

问题解决:AlertDialog中删除回调不执行的修复

你的问题出在没有调用onDelete函数——当前代码里只写了onDelete,这只是引用了函数对象,并没有触发执行。

修复步骤:

  1. 在弹窗Yes按钮的onPressed回调里,把onDelete改为onDelete(),主动调用删除函数
  2. 给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:49:13