dart - 为什么用@required注释变量时需要默认值?
问题描述
void main() {
foo(bar: 1);
}
void foo({@required int bar}) {} // Error
错误:
参数 'bar' 的值不能为 'null',因为它的类型,并且没有提供非空默认值。
我正在注释bar
,@required
它也是不可为空的。这意味着我将始终必须提供bar
一个非空值。那么,为什么编译器要我提供默认值呢?
解决方案
@required
是来自meta
包的旧注释标记,被引入作为从分析器发出警告的一种方式。在 NNBD 中,这已更改为名为 的关键字required
。您可以在以下链接中阅读有关此关键字的更多信息:
https://dart.dev/null-safety/understanding-null-safety#required-named-parameters
推荐阅读
- java - Firestore 生成的密钥与集合中的自定义密钥?
- google-apps-script - 根据行单元格值的出现复制或更新行
- verilog - Systemverilog 中的双向分配
- android - AsyncTask 实际上不是异步的
- authentication - cochdb 权限角色始终“未授权”
- apache-camel - Apache Camel File 组件基本路径
- javascript - 使用 javascript 更改 DIV 按钮的值
- angular - Angular 6:不要触发验证器 setValue
- mongodb - 需要帮助进行 mongo $lookup 查询
- sharepoint - OpenID 与多个客户端和 SSO 连接