颤振中的火基分页



我正在使用Firebase firestore来开发我正在开发的应用程序。基本上,我有一个可能包含数千个文档集合("聊天"(,我需要一种方法来实现Firebase分页来限制从后端检索的文档量。

im 使用流构建器并将下面的查询作为流传递:

stream: widget.messageDocRef
.collection('Chat').orderBy('timestamp', descending: true)
.limit(80)
.snapshots();

我有一个列表视图和一个滚动控制器,代码:

ListView(
physics: const AlwaysScrollableScrollPhysics(),
reverse: true,
controller: _scrollController,
padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 10.0),
children: messagesBubble,
),

我找不到任何关于如何在 Flutter 中实现它的好文档。

谢谢!

使用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

最新更新