Flutter 与 Firestore:StreamBuilder 与 StreamProvider

Mar*_*rco 8 firebase flutter google-cloud-firestore

我正在使用 Flutter 开发应用程序,并且正在使用 Cloud Firestore。没有任何理由,更喜欢之间的一个StreamBuilderStreamProvider

小智 17

有什么理由喜欢一个吗?

StreamBuilder 非常好用且易于用于您确定仅在同一个小部件中需要的流。如果您的应用不断增长,通过您的应用小部件传递此流数据会变得混乱,在这种情况下,请使用 StreamProvider。

为什么?

StreamProvider 是一个比 StreamBuilder 更完整的解决方案:

  • StreamBuilder 是 Fl​​utter 附带的一个小部件,每次流更新时都会自行重建,这是唯一的工作。
  • StreamProvider 是Provider 包附带的一个小部件,它是使用 StreamBuilder 构建的,但将其与InheritedWidget相结合,使您可以有效地通过小部件树传递信息。

一些有用的信息和代码

David King 在此视频中解释了从使用 StreamBuilder 到 StreamProvider 的演变,解释了它们的好处(以及允许拥有多个流的 MultiProvider)。他的代码在这个 GitHub repo 中

这篇 Fireship 文章中,有一个视频和代码解释了如何将 Firebase 与 Provider 一起使用。有一个非常有用的示例,可以将它与 Firebase 用户身份验证一起使用。