我认为在新的 Dart 规则中,变量不能声明/初始化为 null。所以我们必须late在变量类型之前放置一个关键字,如下所示:
late String id;
Run Code Online (Sandbox Code Playgroud)
或者?变量类型后面的标记,如下所示:
String? id;
Run Code Online (Sandbox Code Playgroud)
这两者是相等的还是有一些区别?
小智 3
可空变量无需在使用前进行初始化。
默认初始化为 null:
void main() {
String? word;
print(word); // prints null
}
Run Code Online (Sandbox Code Playgroud)
关键字late 可用于标记稍后将初始化的变量,即不是在声明它们时而是在访问它们时初始化。这也意味着我们可以拥有稍后初始化的不可空实例字段:
class ExampleState extends State {
late final String word; // non-nullable
@override
void initState() {
super.initState();
// print(word) here would throw a runtime error
word = 'Hello';
}
}
Run Code Online (Sandbox Code Playgroud)
在初始化之前访问一个字将引发运行时错误。
| 归档时间: |
|
| 查看次数: |
2517 次 |
| 最近记录: |