"LateInitializationError"

"LateInitializationError"

我遇到 “不可为空” 的问题,更新到最新版本时出现这些错误。 我在 运行 应用程序时收到此错误消息:

构建Builder时抛出了以下LateError:

LateInitializationError: 字段 '_rHelper@616106152' 尚未初始化。

注意:我也试过“.whenComplete()”,但没有用!

您必须申报

Database? _database;
RHelper? _rHelper;

而不是

static late Database _database;
static late RHelper _rHelper;

因为这些变量可能包含 null 个值(参见您自己的代码):

if (_rHelper == null) // <-------

关键字late用于不可为空的变量,稍后将初始化(例如,在initState方法中)。

更新:

由于 _rHelper 可以为空,因此您必须使用 ! (感叹号)将可空值解析为不可空值。

class RHelper {
  factory RHelper() {
    if (_rHelper == null) {
      _rHelper = RHelper._createInstance();
    }
    return _rHelper!; // <--------------
  }

  RHelper._createInstance();
  
  static RHelper? _rHelper;
}

P.S。请阅读这篇文章Understanding null safety