Riverpod 作为 Provider 的「升级版」,除了保留了部分 Provider 的使用方式(比如 Consumer
),其它看起来很不一样,如果继续用 Provider 的使用思路,会使用的不伦不类。
Provider 的分类
没错,Rivderpod 中依旧继续使用 Provider 的概念。但是发生了一些变化,比较常用的有如下几个类型:
Provider
StateProvider
StateNotifierProvider
FutureProivder
/StreamProivder
ChangeNotifierProvider
在「Provider」框架中,我们通常使用 ChangeNotifierProvider
,而在 Rivderpod 中,我们应该尽量避免使用它。在 Rivderpod 中,provider 一般是 final 的,通常状态也希望是不可变的,而 ChangeNotifierProvider
破坏了这个概念,其它 provider 则遵循了单一状态的原则,可以变的只有「状态」的值。
该怎么选择 Provider
一般来说,如果你要存的数据类型比较简单,用 StateProvider
就够了,复杂的可以用 StateNotifierProvider
, StateNotifierProvider
允许你自定义一个 StateNotifier
。
Provider
通常用于和其它类型的 Provider 联动,因为它可以缓存内容,直到数据真正发生了变化。
FutureProivder
/StreamProivder
有点像 FutureBuilder
这种东西,它的构造参数是 async 的,所以,你可以单独使用,也可以和其它 Provider 联动,不过,一般它们的使用频率不会太高(其它方式可以替代)
ChangeNotifierProvider
能不用就不用,除非上面的 Provider 都解决不了你的问题。