如何修复使用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
相关产品推荐
相关产品推荐

