我有一个静态字段:
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中延迟求值的。因此没有办法绕过这一点;触摸";现场。