首页 > 解决方案 > 为什么用@required注释变量时需要默认值?

问题描述

void main() {
  foo(bar: 1);
}

void foo({@required int bar}) {} // Error

错误:

参数 'bar' 的值不能为 'null',因为它的类型,并且没有提供非空默认值。

我正在注释bar@required它也是不可为空的。这意味着我将始终必须提供bar一个非空值。那么,为什么编译器要我提供默认值呢?

标签: dart

解决方案


@required是来自meta包的旧注释标记,被引入作为从分析器发出警告的一种方式。在 NNBD 中,这已更改为名为 的关键字required。您可以在以下链接中阅读有关此关键字的更多信息:

https://dart.dev/null-safety/understanding-null-safety#required-named-parameters


推荐阅读