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 。