为什么我的生成器函数执行两次?

时间:2020-09-30 20:58:24

标签: firebase flutter dart google-cloud-firestore

我要检查是否存在使用此用户名和帐户类型的收藏集,这意味着我想查看用户是否为高级会员。

应用运行时的输出为: 好 用户 好 模型

为什么它两次打印“确定”,并且看起来快照既有数据又没有数据?

这是代码的一部分,如果什么也没说,我将提供完整的课程:

walk( if type=="object" and .task and (.task|startswith("tbd-")) and
         any(.[]; type=="object" and has("german"))
      then .task|=sub("tbd-"; "premium-")
      else . end )

预先感谢您,也许有最简单的方法来查看是否存在带有此类数据的收集?

1 个答案:

答案 0 :(得分:0)

据我所见,这按预期工作。首次渲染窗口小部件时,它将开始从Firestore加载stream的数据。那时snapshot.hasData仍然是false,因此它使用if块来呈现您的小部件。

然后,当数据可用时,流将更新,并触发小部件再次呈现。此时,snapshot.hasDatatrue,因此它使用else块呈现了窗口小部件。