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

如何修复使用then()时出现的‘void类型值无法使用’错误?

修复Dart中then()使用时的"void表达式无法使用"错误

错误原因

你在调用future.then()时,直接传入了context.loaderOverlay.hide()的执行结果——这个调用返回的是void,但then()方法要求传入一个函数类型的参数(用来在Future完成后执行),因此触发了类型错误。

修复方案

方案1:用匿名函数包裹回调

通过箭头函数或普通匿名函数,把hide()的调用包装成一个函数传入then():

void handleSubmitWrapper() {
  final future = handleSubmit();
  // 用下划线占位符表示不需要Future返回的void参数
  future.then((_) => context.loaderOverlay.hide());
}

或者使用多行匿名函数:

void handleSubmitWrapper() {
  final future = handleSubmit();
  future.then((_) {
    context.loaderOverlay.hide();
  });
}

方案2:改用async/await(更推荐)

如果代码逻辑允许,用async/await替代then(),代码可读性更强,也避免了回调参数的问题:

// 给方法添加async修饰符
void handleSubmitWrapper() async {
  await handleSubmit();
  context.loaderOverlay.hide();
}

错误提示原文:
此表达式类型为‘void’,因此其值无法使用。请检查是否使用了正确的API;可能存在您未预期的返回void的函数或调用。同时检查可能为void的类型参数和变量。dart

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:44:58