我正在迁移到空安全,并且有一些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
}
}