firebase - 在 Flutter with Firebase 中查看用户评论时遇到问题
问题描述
我正在尝试对用户在他的个人资料页面上的评论进行排序,但代码无法正常工作这里有什么问题
List<Widget> myComments = [];
posts.data.docs.forEach((post) {
cloudRef.collection('blog').doc(post.id).collection('comments').where('ownerID',isEqualTo:id).get().then((val){
val.docs.forEach((comment) {
myComments.add(CommentCard(replyContent: comment.data()));
});
});
});
return myComments;
解决方案
代码的问题在于forEach
与异步操作一起使用。forEach
不等待每个循环的异步操作完成。
使用 签出此代码更新for-in
。我还更新了要使用的评论卡列表,.map
因此您可以将其放在一个列表中,然后一次添加所有评论。
List<Widget> myComments = [];
for (var post in posts.data.docs) {
var val = await cloudRef.collection('blog').doc(post.id).collection('comments').where('ownerID',isEqualTo:id).get();
var commentCardList = val.docs.map((comment) => CommentCard(replyContent: comment.data())).toList();
myComments.addAll(commentCardList);
}
return myComments;
推荐阅读
- c++ - Xcode,SFML 错误 dyld:未加载库
- javascript - Node JS请求和cheerio HTML页面错误
- python-3.x - 使用 Keras 进行多处理 - 张量不是该图的元素
- android - 使用 bundle 将值从活动传递到适配器
- javascript - A-Frame appendChild 适用于 Firefox 但不适用于 Chrome
- android - 将 GCM 应用程序转换为 Firebase 问题
- php - 在另一个二维数组中搜索数组
- ios - 内部有模型时如何在可编码中使用init方法?
- airflow - Apache Airflow 环境设置
- javascript - 在 Java 中合并两个对象列表以创建带有 Jackson 的 Json