颤动中的Firebase分页
Posted
技术标签:
【中文标题】颤动中的Firebase分页【英文标题】:Firebase pagination in flutter 【发布时间】:2020-04-28 17:57:53 【问题描述】:我正在为我正在开发的应用程序使用 Firebase Firestore。基本上,我有一个 Collection('Chat') 可能包含 数千个文档 我需要一种方法来实现 firebase 分页 以限制多少从后端检索文档。
我使用 streamBuilder 并将下面的 Query 作为流传递:
stream: widget.messageDocRef
.collection('Chat').orderBy('timestamp', descending: true)
.limit(80)
.snapshots();
我有一个 ListView 和一个 scrollController ,代码:
ListView(
physics: const AlwaysScrollableScrollPhysics(),
reverse: true,
controller: _scrollController,
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 10.0),
children: messagesBubble,
),
我找不到任何关于如何在 Flutter 中实现它的好文档。
谢谢!
【问题讨论】:
【参考方案1】:使用ScrollController
,然后在initState
中执行以下操作:
@override
void initState()
this.getdbData();
super.initState();
_scrollController.addListener(()
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent)
getdbData();
);
所以首先添加一个监听器,该监听器将注册一个闭包,以便在对象更改时调用。然后检查position.pixel
是否等于position.maxScrollExtent
,满足上述条件则调用该方法。
别忘了处理控制器:
@override
void dispose()
_scrollController.dispose();
super.dispose();
https://api.flutter.dev/flutter/widgets/ScrollPosition-class.html
https://api.flutter.dev/flutter/widgets/ScrollController-class.html
getdbData()
是从数据库中检索数据的方法,您将分配给属性stream
【讨论】:
我知道该怎么做,我不知道如何使用 Firebase pagination ,在他们的文档中,他们谈到 对查询进行分页,他们有多个查询!! . 他们所做的只是多个查询.. 他们没有做任何分页firebase.google.com/docs/firestore/query-data/….. 您可以在方法getDbData
中进行多个查询在第一个查询中使用await
并分配对变量的查询然后在下一个查询中使用该变量..以上是关于颤动中的Firebase分页的主要内容,如果未能解决你的问题,请参考以下文章