У меня возникли проблемы с просмотром комментариев пользователей в Flutter с Firebase

# #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:

Проблема с кодом заключается в том, что 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;