每次实例化此类时,我都希望调用 firebase 和 _datapoint 给定检索到的值。否则,我必须在类中的每个函数中分配数据点(参见 functionOneExample),这很容易出错。注意:我不能使用 initstate,因为这个函数不是小部件(我不需要也不想要构建方法)。如果可以,我会在 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.
}
最佳答案
我可以推荐一个私有(private)构造函数和一个静态方法来获取所有异步值,然后使用私有(private)构造函数返回一个对象:
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.
}
通过这种方式,您只需要等待 Future
来自 getInstance()
在此之后,您无需等待即可访问类中的所有变量。
关于class - 如何在没有 initstate 的情况下使用异步值初始化 dart 类的私有(private)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62645832/