【发布时间】:2021-03-25 06:41:15
【问题描述】:
我目前有一个 getReviewsLength() 方法,它将从 firestore 获取 _favourites 列表中每个项目的评论长度。但是,在将长度添加到 reviewsLength 列表之前,该方法已经触发了 loadingComplete() 方法。有没有办法确保 getReviewsLength() 方法在触发 loadingComplete() 之前完成?
我尝试过使用 async/await,但我似乎无法让它工作,因为我不确定该放在哪里。
getReviewsLength() {
_favourites.forEach((shopname) {
firestore.collection('shops').doc(shopname['shopName']).collection('reviews').get()
.then((value) {
setState(() {
int length = value.size;
reviewsLength.add(length);
});
});
});
loadingComplete();
}
loadingComplete(){
setState(() {
loading = false;
});
print(reviewsLength);
}
【问题讨论】:
-
getReviewsLength()需要异步。您需要删除forEach并使用常规循环,然后等待每次调用firestore.collection(...) -
谢谢@smac89。 for 循环有效!