【问题标题】:Is there a way to check if late variable has been initialized [duplicate]有没有办法检查后期变量是否已初始化[重复]
【发布时间】:2021-04-28 09:30:49
【问题描述】:

我正在迁移到 null 安全性,并且有一些设置器可以在值更改时执行代码

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
    }
}

【问题讨论】:

    标签: flutter dart-null-safety


    【解决方案1】:

    简短的回答是您无法检查。

    late 是当您确定变量肯定会被初始化并且在这样做之前不使用时。如果你不确定它永远不会为空,那么你应该把它设为nullable

    所以不是

    late int _someValue;
    

    做起来

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

    【讨论】:

    • 否定操作数的静态类型必须为“bool”。
    猜你喜欢
    • 2022-11-12
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2016-10-03
    • 2015-10-24
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多