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