我正在使用带有Firebase的flutter创建一个应用程序。下面的函数从我的Firebase数据库获取一些数据,但是问题是获取数据花费的时间太长。如何确保应用程序在等待Firebase获取数据之前先完成操作?
我想做一个等待的事情,但是我不知道是否可以做:
await Firestore.instance...
代码:
void getData() {
Firestore.instance
.collection('collection')
.document('document')
.get()
.then((DocumentSnapshot ds) {
var count = ds.data.length;
for(var i = 0; i < count; i ++){
Firestore.instance
.collection('collection')
.document('document')
.get()
.then((DocumentSnapshot dss) {
// do something
});
}
});
}
答案 0 :(得分:4)
要使用await,必须使函数异步:
Future<void> getData() async {
那是的,你可以做
var result = await Firestore.instance.collection...
而不是在then()回调中处理Future结果。在解决Future之前,将不执行下一行。
答案 1 :(得分:0)
您将需要等待Firestore返回数据。 然后返回。
Future getData() async {
DocumentSnapshot ds = await Firestore.instance
.collection('collection')
.document('document')
.get();
final data = ds.//do something with document snapshot
return data;
}
希望这会有所帮助。