在变量类型之前使用' late '关键字或使用'有什么区别?在变量后面打上记号,然后在Flutter中键入它?<



我认为在新的Dart规则中,变量不能被声明/初始化为null。所以我们必须在变量类型前加上late关键字,如下所示:

late String id;

或者在变量类型后面加上?标记,如下所示:

String? id;

两者相等还是有差异?

可空变量在使用之前不需要初始化。

默认初始化为null:

void main() {
String? word;

print(word); // prints null
}

关键字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';
}
}

访问一个字之前初始化将抛出一个运行时错误。

当你使用late关键字时,你不能让变量未初始化,当你用?允许你在创建变量时不初始化,并调用

Null安全规则并不意味着不能使用Null。可以这样做,但是您应该通过添加"?"来指示变量的值可能为null。到它的类型声明

通过use关键字late表示变量具有非空类型,尚未初始化,但稍后将初始化。

在初始化之前尝试访问后期变量的值将引发异常。

相关内容

最新更新