屏幕上的单个Streambuilder-如何访问集合的子集合文档

问题描述 投票:0回答:1

希望从经验丰富的Flutter / Dart开发人员那里获得一些有关如何实施以下想法的建议。仍在这里学习,因此,我始终感谢您对此提供的任何建议或解决方案!

到目前为止我所做的

目前,使用Streambuilder和Listview.builder,我已经能够从Firestore创建文档列表。在这种情况下,文档是用户及其信息,但实际上可以是任何东西。

[当某人点击其中一张卡时,它会打开一个带有该用户信息的BottomSheet。因为我的Streambuilder从我的Users集合创建了一个流,所以我可以获取每个用户的所有字段并显示它们,只有一个例外。

作为每个用户的子集合,我有一个“回合”集合。它包含了他们打过的所有高尔夫球场的个人文件,每个洞的得分都作为字段。

我的问题:

页面上是否可以有一个Streambuilder,不仅可以访问该集合的文档,还可以访问每个文档的子集合中的所有信息?

如果不可能,您将采取什么解决方案?

Screenshot of Firestore

flutter dart collections stream stream-builder
1个回答
0
投票

每个StreamBuilder都对应一个流,因此要实现您的行为,您需要嵌套这些流。但是,在Firestore的世界中,您不想以需要读取太多文档的方式进行结构化。一条经验法则是在您的应用程序中为每个视图创建一个文档。

我将如何解决这个问题,是在用户文档中包含一个rounds数组,因此每当加载用户数据时也要加载它们。当回合的数量不会太大并且一次回合中没有保存太多信息时,建议使用此方法。请记住,单个文档的上限为1MB。

[如果您的回合确实包含很多内容,那么只要用户选择这样做,我只会加载此数据(例如,通过“显示回合”按钮)。或上述两种方法的混合。您可以通过在文档中添加rounds数组并仅在其中保存最相关的信息来实现。因此,您可以将该数组显示为列表,并且只要用户选择其中的一个,就可以从相应的子集合中加载该回合的剩余数据。

不知道您的具体用例,很难确定哪种方法适合您的情况。

© www.soinside.com 2019 - 2024. All rights reserved.