首页 > 解决方案 > 在 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;

标签: firebaseflutterdart

解决方案


代码的问题在于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;

推荐阅读