为什么返回类型可为 null 的函数需要返回 null?

iDe*_*ode 4 dart dart-null-safety

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

Future<int?> foo() async {
  if (someCondition) return 42;
}
Run Code Online (Sandbox Code Playgroud)

该函数具有可为空的返回类型“FutureOr<int?>”,但结束时不返回值。

我告诉 Dart Future 可能会以可空类型完成int?,那么为什么我必须显式返回null才能摆脱警告呢?

jam*_*lin 5

这是警告,而不是错误。警告是针对技术上合法但很可能是编程错误的事情。编写该代码的人更有可能忘记处理代码路径,而不是他们故意想要隐式return null. 显式return null还使意图清晰,因此更具可读性。