是否有一种方法可以从可自我更新的Firestore Stream <documentsnapshot>创建全局变量?

时间:2019-05-17 14:28:06

标签: dart flutter stream google-cloud-firestore

我正在制作一个电子商务应用,并将所有价格都保存在Firestore中的Map中。我期待制作一个可以从应用程序的每个部分访问的全局变量,并且如果数据库中发生更改,该变量将进行更新。

我要避免的是每次需要获取价格时都使用StreamBuilder。

我一直在尝试提出解决方案,但是我发现处理Firestore的每种方式都使用StreamBuilder方法,但找不到将其转换为变量的方法。

我知道我的解释可能有点混乱。但基本上我想做的是“ Map price ='firestore中的Map'”

有什么想法吗?我是新手,要多谢大家!

2 个答案:

答案 0 :(得分:0)

是的,如果要使用响应式窗口小部件,则必须在各处使用StreamBuilder。因为如果数据本身更新,那么您的窗口小部件就具有状态,因此,您需要一个StatefulWidget(StreamBuilder是一个StatefulWidget)。

想象一下,即使您仍然需要所需的变量,即使您仍然需要类似FutureBuilder或ScopedModelDescendant(如果使用ScopedModel)或Provider(如果使用提供者程序包)的StreamBuilder,并且列表将取决于哪个程序包你用...

不要害怕使用它们。如果您在StatelessWidget页面的其余部分,则可能不会发现任何性能问题。

答案 1 :(得分:0)

您可以使用继承的小部件。

观看此视频: https://www.youtube.com/watch?v=Zbm3hjPjQMk

当您的应用开始使用BLoC将数据与UI分开时,您可以读取数据。解释如下:

https://www.youtube.com/watch?v=fahC3ky_zW0