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

Flutter开发中如何修复'This expression has type void'报错

报错信息
lib/pages/pomodoro.dart:31:21: Error: This expression has type 'void' and can't be used.
                     ? null
                     ^
错误原因

这个报错确实由EntradaTempo组件inc属性的条件表达式引发,核心问题有两点:

  • Dart三目运算符要求冒号前后两个分支的返回类型兼容,你写的store.incrementarTempoWork()是直接执行方法,该方法返回值为void,和前一分支的null类型不匹配,直接触发类型校验错误。
  • 从业务逻辑看,inc参数需要接收点击时触发的回调函数,给方法加括号等于在组件build阶段就直接执行了时间增量逻辑,根本不是把回调传给组件等待点击触发,逻辑本身也写错了。
修复方案

去掉incrementarTempoWork后面的括号,改为传递函数引用而非方法执行结果,让三目运算符两个分支的类型统一为可空回调类型(VoidCallback?),既符合类型校验规则,也能正确把点击回调传给组件。
修正后的对应代码片段:

EntradaTempo(
  titulo: 'Work',
  valor: store.tempoWork,
  inc: store.start && store.isWorking()
      ? null
      : store.incrementarTempoWork, 
  dec: store.reduceTempoRest,
),

注意:需要同步检查dec参数传入的store.reduceTempoRest,如果不小心加了括号写成执行方法的形式,会触发完全相同的void类型报错。

内容的提问来源于stack exchange,提问作者pomoworko.com

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:01:09