Dart 在被调用之前不会初始化静态列表



我有一个静态字段:

static final List<Provider> _providers = [
ESVAPI()
];

它内部的对象被构造(通过对超类的调用(,以将它们自己添加到其他列表中:

Provider(this.name, this.requiresKey, this._versions) {
Provider._foo.add(name);
}

当我尝试在类中引用列表foo时,在引用变量之前,对象不会初始化。例如:

static final List<Provider> _providers = [
ESVAPI(),
];
static final _foo = <String>[];
static final name = _foo[0];

变量name将为null,因为列表中的项目尚未初始化。在我引用_providers之前,不会初始化ESVAPI对象。即使我引用它,变量name也将保持为null,因为它已经用null值构造。

考虑到变量是最终的,并且我知道有多少类,简单地键入所需的值并不困难,但能够立即初始化列表及其内部的所有值将在未来的不同用例中证明是有用的。当静态列表第一次实例化时,是否有任何方法可以初始化该列表中的值?

据我所知,静态字段是在dart中延迟求值的。因此没有办法绕过这一点;触摸";现场。

相关内容

  • 没有找到相关文章

最新更新