dart Flutter的Firestore缓存是否可以使用完全相同的查询管理多个FirestoreListView,而无需多次请求数据?

ee7vknir  于 12个月前  发布在  Flutter
关注(0)|答案(1)|浏览(182)

我有一个应用程序,它具有这个Firestore结构:

集合“组”

title: "Group's title"
members:
  - "user_id_1"
  - "user_id_2"
posts: SubCollection

字符串

集团子集合“帖子”

text: "user's text"
image: "image_url"
author: "author_id"


我有一个Flutter应用程序,它需要在用户之间近乎实时地同步,并且有不同的页面列出组:

“群组”页面

此页面列出用户所属的组。
该列表使用以下内容构建:

  • 一个过滤“groups”集合的查询,在成员列表中查找当前用户所在的所有组。(如果更有效的话,我可以在用户数据中创建一个组列表)
  • 一个FirestoreListView小部件,使用此查询为每个组创建ListTile。点击ListTile将打开该组的帖子专用页面。
    **“创建帖子”页面 *

当在组的上下文之外打开时,“创建帖子”页面包含一个包含用户所有组的选择器,以便用户可以选择帖子所属的组。
选择器中的列表也是通过一个查询生成的,该查询查找成员中包含当前用户的所有组以及包含不同ListTitle小部件的F irestoreListView小部件。

问题

我的第一步是在状态中创建一个集中的组列表。然后我意识到,在不同的接口点请求完全相同的数据应该利用Firestore缓存。所以在我看来,只要查询完全相同,使用2 FirestoreListView就不是问题。我错了吗?

chhqkbe1

chhqkbe11#

正如@FrankvanPuffelen在他的评论中提到的那样,如果你有多个监听器监听同一个查询,那么你只需要阅读一次文档就可以了。基本上,只有第一个监听器会产生读操作。这意味着所有其他的查询都会被完成,因为数据已经在该高速缓存中了。记住,从该高速缓存中读取的文档作为读操作计费。

相关问题