Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在仍侦听新文档时对firestore查询进行分页_Flutter_Google Cloud Firestore_Pagination - Fatal编程技术网

Flutter 在仍侦听新文档时对firestore查询进行分页

Flutter 在仍侦听新文档时对firestore查询进行分页,flutter,google-cloud-firestore,pagination,Flutter,Google Cloud Firestore,Pagination,和其他许多人一样,我有一个具有聊天功能的应用程序。我有一个监听新聊天信息的StreamBuilder,还有一个显示新聊天信息的ListView.builder。我正在寻找一种很好的方法来对消息进行分页,但是我发现没有一种解决方案适合我,因为我总是要听新消息 我试过的一件事是,但即使作者说他已经更新了代码,这似乎也不起作用 每个聊天信息在一个集合中都有自己的文档,所以现在我只需获取集合中的所有文档,并按时间字段对它们进行排序。但是,在性能下降之前,这只适用于大约20条消息,因此如果有人能帮助我,我

和其他许多人一样,我有一个具有聊天功能的应用程序。我有一个监听新聊天信息的
StreamBuilder
,还有一个显示新聊天信息的
ListView.builder
。我正在寻找一种很好的方法来对消息进行分页,但是我发现没有一种解决方案适合我,因为我总是要听新消息

我试过的一件事是,但即使作者说他已经更新了代码,这似乎也不起作用


每个聊天信息在一个集合中都有自己的文档,所以现在我只需获取集合中的所有文档,并按时间字段对它们进行排序。但是,在性能下降之前,这只适用于大约20条消息,因此如果有人能帮助我,我将非常高兴。

我猜您正在显示按创建日期排序的消息,对吗?那你为什么不用日期打页码呢

chatcollectionref.
where("creationdate", "<", enddate)
... // Add more conditions if needed
.orderBy("creationdate","desc").limit(20).get()
chatcollectionref。

其中(“creationdate”,“我猜您正在显示按创建日期排序的消息,对吗?为什么不使用日期分页呢

chatcollectionref.
where("creationdate", "<", enddate)
... // Add more conditions if needed
.orderBy("creationdate","desc").limit(20).get()
chatcollectionref。

where(“creationdate”,“我可以这样做,但是如果用户想要向上滚动查看较旧的邮件呢?如果我只是将限制添加到20,则您无法查看较旧的邮件,除非我指定从何处开始,例如
.startAfterDocument()
,这就是我的问题所在;据我所知,我不能一边听新文档一边这么做当然你可以,这就是为什么你在用户滚动时更改enddate。你仍然只能检索20条消息,但你开始晚了哦,对不起。是的,这可能行得通。我现在就试试。这很有效,虽然有点起伏不定。但我认为我可以通过损坏分页来解决这个问题。现在我的问题是,当用户到达结尾时,我现在可以如何,最好不要显示少于20个文档。你知道我能如何实现这一点吗?@汉尼斯胡特尔。如果这个答案是有用的,请考虑一下投票并将其标记为接受。如果你有更多关于你的起源的问题。所有问题请在此处发表评论。否则,如果您有更多与新问题相关的问题,这些问题可能需要创建一个全新的问题。谢谢!我可以这样做,但如果用户希望向上滚动以查看旧邮件,该怎么办?如果我仅将限制添加到20,则除非我指定从何处开始,否则您无法查看旧邮件例如,
.startAfterDocument()
,这就是我的问题所在;据我所知,我不能一边听新文档一边这么做当然你可以,这就是为什么你在用户滚动时更改enddate。你仍然只能检索20条消息,但你开始晚了哦,对不起。是的,这可能行得通。我现在就试试。这很有效,虽然有点起伏不定。但我认为我可以通过损坏分页来解决这个问题。现在我的问题是,当用户到达结尾时,我现在可以如何,最好不要显示少于20个文档。你知道我能如何实现这一点吗?@汉尼斯胡特尔。如果这个答案是有用的,请考虑一下投票并将其标记为接受。如果你有更多关于你的起源的问题。所有问题请在此发表评论。否则,如果您有更多与新问题相关的问题,这些问题可能需要创建一个全新的问题。谢谢!