[官文翻译]Flutter状态管理库Riverpod - 所有的Provider - StreamProvider

460 阅读1分钟

Riverpod的官方文档有多国语言,但是没有汉语,所以个人简单翻译了一版。

官网文档:Riverpod

GitHub:GitHub - rrousselGit/river_pod

Pub:riverpod | Dart Package (flutter-io.cn)

译时版本:riverpod 1.0.3


StreamProvider

StreamProvider 和 FutureProvider 类似,只是它用于 Stream 而不是 Future

StreamProvider 通常用于:

  • 监听 Firebase 或 web-socket
  • 每隔几秒钟重新构建其它 provider

因为 Stream 天然地暴露了用于更新的监听方式,一些人可能会认为使用 StreamProvider 只有较低的价值。尤其是你可能会相信 Flutter 的 StreamBuilder  同样也能监听 Stream ,但这是一个错误。

使用 StreamProvider 而不是 StreamBuilder 有很多好处:

  • 它允许其它 provider 使用 ref.watch 监听 stream。
  • 使用 AsyncValue,它能确保加载中和错误场景能被正确处理。
  • 它移除了区分广播 stream 和 一般 stream 的必要。
  • 它缓存了 stream 发出的最新值,确保如果在事件触发后添加了监听器,监听器也能立即访问最新更新事件。
  • 通过覆写 StreamProvider ,它可以很轻易地 mock 测试中的 stream 。