Dart 2.12 添加了late关键字,它的作用是显式声明一个非空的变量,但不初始化。
例如下面的代码_temperx如果不加late关键字是通不过静态检查的,但是添加了late通过了检查又可能带来潜在的风险。
// Using null safety:
class Milk {
late String _temperx;
void changehot() {
_temperx = 'hot';
}
String serve() => _temperx + ' milk';
}
main() {
var milk = Milk();
milk.changehot();
milk.serve();
}
还有就是延迟初始化变量,例如下面的代码,temperx被使用,_readbook这个函数才会被调用,才会temperx初始化。
late String temperx = _readbook(); // Lazily initialized.