为什么在缺少所需的函数参数期间,Flutter只给我一个警告而不是一个错误?
让我们以以下代码为例:
FlatButton(
color: Colors.red,
onPressed: () {
doSomething();
},
),
FlatButton需要一个@required Widget child
和@required VoidCallback onPressed
参数。这里缺少子元素,但它仍然编译,只给我一个警告。
是@Required
参数不重要,给一个错误?有人能解释一下为什么这只给出警告而不是错误吗?
@required
,由@
指定,只是一个注释(由package:meta
提供),而不是一个语言特性。它告诉诸如Dart分析器之类的工具生成警告,但忽略提供丢失的参数在技术上仍然是合法的,因此它将编译。
您可以让Dart分析器将其视为错误而不是警告,但是,如果您忽略了运行分析器,这将无济于事。
请注意,null安全版本的Dart添加了一个新的required
关键字来替换@required
注释,并且因此将是一个适当的语言特性,如果省略该参数将生成编译错误。