为什么我需要在返回类型可为空的函数中返回 null?

4

我在这段代码中收到了一个警告:

Future<int?> foo() async {
  if (someCondition) return 42;
}

此函数的可空返回类型为 'FutureOr<int?>',但未返回任何值。

我告诉Dart,Future可能会完成一个可空类型的int?,那么为什么我必须显式地返回null才能消除警告?


1
我在这段代码中没有看到相同的警告。你的 analysis_options.yaml 是什么样子的? - mmcdon20
你有任何明确的分析器规则吗? - mmcdon20
@mmcdon20 不,那是文件中唯一的一行。我没有在其他任何地方添加任何linter或analyzer规则。 - iDecode
@mmcdon20 我刚刚创建了一个新的Flutter项目,我在那里看到了相同的警告。因此,你一定在你的项目中将它消除掉了。 - iDecode
我还创建了一个全新的Flutter项目来测试这个问题。也许我们使用的是不同版本的Flutter/Dart?我使用的是Flutter 2.8.1 • channel stableTools • Dart 2.15.1 - mmcdon20
显示剩余3条评论
1个回答

5

这只是一个警告而非错误。警告指的是那些虽然技术上可行但很可能是编程错误的事情。写这样的代码更有可能是忘记处理某个分支,而不是故意使用隐含的 return null。 显式使用return null 也使意图更加清晰,因此代码更易读。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接