颤抖如何根据一定的值将列表从Firebase分组

时间:2020-05-28 00:29:14

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

我有一个Firebase数据库,其中包含2个相关集合:“产品”和“类别”。

我想在按产品类别分组的列表视图中显示产品。

每个产品文档中都有一个“类别”字段,即类别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 个答案:

答案 0 :(得分:0)

实际上,通过我首先提供的问题的链接可以很容易地解决该问题。 您可以只使用GroupedListView (package)而不是Listview.builder。 不知道为什么我花了这么长时间才得到:p 希望这对以后的人有所帮助:)

SELECT user_id,
       amount,
       date,
       sum(amount) OVER (PARTITION BY user_id
                         ORDER BY date
                         RANGE BETWEEN INTERVAL '1 day' PRECEDING
                               AND CURRENT ROW)
          AS sum_over_two_day
FROM atable
ORDER BY user_id, date;

 user_id | amount |    date    | sum_over_two_day 
---------+--------+------------+------------------
 user8   |     50 | 2020-02-02 |               50
 user8   |     25 | 2020-02-05 |              100
 user8   |     25 | 2020-02-05 |              100
 user8   |     25 | 2020-02-05 |              100
 user8   |     25 | 2020-02-05 |              100
 user8   |    250 | 2020-02-06 |              500
 user8   |    150 | 2020-02-06 |              500
 user8   |    300 | 2020-02-07 |              700
(8 rows)