Flutter如何根据某个值从firebase对列表进行分组
Posted
技术标签:
【中文标题】Flutter如何根据某个值从firebase对列表进行分组【英文标题】:Flutter how to group a list from firebase based on a certain value 【发布时间】:2020-09-15 04:43:09 【问题描述】:我有一个包含 2 个相关集合的 firebase 数据库:“产品”和“类别”。
我想在按类别分组的列表视图中显示产品。
在每个产品文档中都有一个“类别”字段,即类别 ID。
现在我有这段代码来创建列表视图:
StreamBuilder(
stream: Firestore.instance.collection('products').snapshots(),
builder: (context, snapshot)
if (!snapshot.hasData) return const Text("Loading...");
return ListView.builder(
itemBuilder: (context, index) => buildProductItem(context, snapshot.data.documents[index]),
itemCount: (snapshot.data.documents.length),
);
)
我已经尝试了一些方法(例如:question),但我想将其保留在 StreamBuilder 中,以便数据仍会实时更新。
如何对它们进行分组,以便在每个组上方显示一个标题,并在下方显示与该标题对应的产品?
【问题讨论】:
【参考方案1】:实际上,通过我首先提供的问题的链接来修复它非常容易。 您可以只使用 GroupedListView (package) 而不是 Listview.builder。 不知道为什么我花了这么长时间才得到那个:p 希望这对将来的其他人有所帮助:)
StreamBuilder(
stream: Firestore.instance.collection('products').snapshots(),
builder: (context, snapshot)
if (!snapshot.hasData) return const Text("Loading...");
return GroupedListView(
elements: snapshot.data.documents,
groupBy: (element) => element['category'],
groupSeparatorBuilder: _buildGroupSeparator,
itemBuilder: buildProductItem,
order: GroupedListOrder.ASC,
);
),```
【讨论】:
以上是关于Flutter如何根据某个值从firebase对列表进行分组的主要内容,如果未能解决你的问题,请参考以下文章
Flutter & Firebase:如何检查某个项目是不是存在于 Firebase 文档中的数组中
如何根据 Firebase Auth 错误消息在 Flutter 中显示自定义警报对话框?
使用Provider for DI时如何根据Firebase Auth流修改Flutter Firebase Stream监听器?