Flutter (Dart)只给我一个警告,而不是在缺少所需的函数参数期间出现错误



为什么在缺少所需的函数参数期间,Flutter只给我一个警告而不是一个错误?

让我们以以下代码为例:

FlatButton(
color: Colors.red,
onPressed: () {
doSomething();
},
),

FlatButton需要一个@required Widget child@required VoidCallback onPressed参数。这里缺少子元素,但它仍然编译,只给我一个警告。

@Required参数不重要,给一个错误?有人能解释一下为什么这只给出警告而不是错误吗?

@required,由@指定,只是一个注释(由package:meta提供),而不是一个语言特性。它告诉诸如Dart分析器之类的工具生成警告,但忽略提供丢失的参数在技术上仍然是合法的,因此它将编译。

您可以让Dart分析器将其视为错误而不是警告,但是,如果您忽略了运行分析器,这将无济于事。

请注意,null安全版本的Dart添加了一个新的required关键字来替换@required注释,并且因此将是一个适当的语言特性,如果省略该参数将生成编译错误。

最新更新