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

Flutter/Dart中满足指定条件时如何正确执行目标函数

问题根因

你写的条件分支没有实际执行_showAlertDialog函数:Dart里如果只写函数名不加后面的调用括号(),只会拿到函数的引用,不会真正运行函数内部的弹窗逻辑。
除此之外还有两个不规范的点:

  • setState的回调里只应该放同步的状态更新代码,弹窗触发、打印日志这类和状态更新无关的副作用逻辑不应该写在里面
  • showDialog是Flutter内置的弹窗方法,本身不需要依赖setState触发渲染
修正方案

调整_nextCSV方法的逻辑,把条件判断挪到setState外部,调用函数时补上括号:

void _nextCSV() {
  setState(() {
    _listData = _listData;
    // 这里保留你原本需要更新的状态逻辑,比如_listCount自增、列表数据更新等
  });

  // 条件判断单独写,函数调用必须加()
  if (_listData[_listCount][2] == "") {
    _showAlertDialog();
  } else {
    print('False');
  }
}

如果你坚持要用三目运算符写法,也必须给函数补上调用括号,注意同样不要把这段逻辑塞在setState回调里:

_listData[_listCount][2] == "" ? _showAlertDialog() : print('False');

小提示:如果要判断字符串为空,用_listData[_listCount][2].isEmpty的写法比== ""更稳妥,可以覆盖值为null的异常场景(前提是你做好类型校验)。

内容的提问来源于stack exchange,提问作者Texter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:18:19