我在 Flutter 中使用 Firebase 查看用户评论时遇到问题

时间:2021-07-24 10:05:00

标签: firebase flutter dart

我正在尝试对用户在他的个人资料页面上的评论进行排序,但代码无法正常工作,请问这里有什么问题

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;

1 个答案:

答案 0 :(得分:1)

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