是否有方法检查后期变量是否已初始化



我正在迁移到空安全,并且有一些setter在值更改时执行代码

set someValue(int value) {
if ( _someValue != val ) {
_someValue = val;
// do some stuff
}
}

由于迁移,我的一些变量现在初始化较晚,可以理解的是,当我检查其值时,我会收到上面的LateInitializationError。有没有办法检查变量是否已初始化?例如,

set someValue(int value) {
if ( !_someValue.isInitilized() || _someValue != val ) {
_someValue = val;
// do some stuff
}
}

简单的答案是你不能检查。

late是指你确定变量肯定会被初始化,并且在初始化之前不会使用。如果你不确定它不会一直为空,那么你应该将其设为nullable

所以不是

late int _someValue;

使其

int? _someValue;
set someValue(int value) {
if ( !_someValue !=null || _someValue != val ) {
_someValue = val;
// do some stuff
}
}

最新更新