【发布时间】:2020-10-01 22:49:51
【问题描述】:
我有一个 StreamBuilder 向列表提供数据,该列表稍后会显示在堆栈中。
我想通过这些规则过滤(删除)某些卡被添加到列表[]:
- 我是卡的所有者 ('ownerId' == currentUserId)
- 我喜欢这张卡片('liked.' contains = currentUserId)
我选择做一个 StreamBuilder 是因为我想在用户与之交互后自动更新堆栈(通过喜欢它,它会消失并显示下一个)。据我了解,流服务于这个目的。但如果我错了,如果有更好的方法,请纠正我。
streamCard() {
return StreamBuilder(
stream: postRef
.orderBy("timestamp", descending: true)
.limit(10)
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return circularProgress();
}
List<PostCard> cards = [];
snapshot.data.documents.forEach((doc) {
cards.add(PostCard.fromDocument(doc));
});
如果“卡片”不为空:
return Stack(
alignment: Alignment.center,
children: cards,
在 Firebase 中,我有: "Cards" > "cardID" > 带有 "ownerId" 和 "liked" 字段("liked" 包含喜欢它的每个 uid)。
想法是将当前的uid与每个cardID的内容进行比较。如果他们在场,请关闭该卡并尝试下一张。
我一直在为这个问题苦苦挣扎,感谢任何帮助!
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore