如何在没有 initstate 的情况下使用异步值初始化 dart 类的私有属性?



每次实例化这个类时,我希望调用Firebase和给定检索值的_datapoint。否则,我必须在类中的每个函数中分配数据点(参见 functionOneExample(,这很容易出错。注意:我不能使用 initstate,因为这个函数不是小部件(我不需要也不想要构建方法(。如果可以的话,我会在初始化状态下打电话给_getThis。感谢您的帮助!!

class AsyncInitExample {
AsyncInitExample(this.enterThis);
String enterThis;
String _datapoint;
_getThis() async {
var firebaseRetrieved = await //Firebase get this;
this._datapoint = firebaseRetrieved;
}
Future<dynamic> functionOneExample {
this._datapoint ?? await _getThis();
}
// etc. etc. etc.
}

我可以建议将私有构造函数与静态方法一起构建以获取所有异步值,然后使用私有构造函数返回对象:

class AsyncInitExample {
AsyncInitExample._(this.enterThis, this._datapoint);
String enterThis;
String _datapoint;
static Future<AsyncInitExample> getInstance(String enterThis) async {
var firebaseRetrieved = await //Firebase get this;
return AsyncInitExample._(enterThis, firebaseRetrieved);
}
String functionOneExample() => _datapoint;

// etc. etc. etc.
}

通过这样做,您只需要等待来自getInstance()Future,在此之后,您无需等待即可访问类中的所有变量。

最新更新