【问题标题】:Flutter how to group a list from firebase based on a certain valueFlutter如何根据某个值从firebase对列表进行分组
【发布时间】: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 中,以便数据仍会实时更新。

如何对它们进行分组,以便在每个组上方显示一个标题,并在下方显示与该标题对应的产品?

【问题讨论】:

    标签: firebase listview flutter firebase-realtime-database grouped-list


    【解决方案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,
         );
       }
    ),```
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2019-11-20
      • 2023-02-07
      • 2021-05-23
      相关资源
      最近更新 更多