У меня есть следующий конструктор потоков:
streamCard() {
return StreamBuilder(
stream: cardsRef
.orderBy("timestamp", descending: true)
.limit(10)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return circularProgress();
}
List<CustomCard> cards = [];
snapshot.data.documents.forEach((doc) {
cards.add(CustomCard.fromDocument(doc));
});
...
return Stack(
alignment: Alignment.center,
children: cards,
);
Мне нужно отфильтровать определенные карты от добавления в поток / отображения, когда:
- Я владелец карты ('ownerId' == currentUserId)
- Карточка понравилась ("понравилось." Содержит = currentUserId)
OwnerId - это поле внутри каждого документа, а Liked - это массив с идентификаторами, которым он понравился.
Я пытался удалить карты из списка карт ‹> с помощью .where и .contains, но не смог правильно их« отбросить ». Я думал, что другим вариантом может быть прямое изменение стека в
children: cards
с помощью cards.removeWhere / .skip или что-то в этом роде.