FlutterでProviderからRiverpodに乗り換えるべきなのか
tl; dr;
ChangeNotifierはシンプルな状態のみ管理するのであればStateNotifierに移行する
複雑な状態を持つのであれば、無理にChangeNotifierを排除する必要はない
なぜ乗り換えるべきなのか
MultiProviderが不要になる
記述自体はそんなに変わらないんだけど、WidgetTreeのネストが浅くなり、DevToolsで追いやすくなる
グローバルで宣言されていないNotifierが使えなくなるので、配信されていないものにアクセスしてしまう危険性がない
NotifierからNotifierへの参照が取れる
UserPageStoreからLoginStateStoreへの参照が取れると、わざわざログイン状態をウィジェット側から流す必要がなくなる
これめっちゃ便利
複数のNotifierを組み合わせたProviderが作れるので、特定のウィジェットのコンテキストに即したProviderを作りやすい
個人的な感想
第一印象として、Riverpodの方が便利なケースが多いと思った
ChangeNotifierからChangeNotifierへの参照を取りたいケースめちゃくちゃあったので、これは本当にデカい
グローバルで宣言するのは経験則的にちょっと抵抗あるけど、finalで定義するからそこまで神経質にならなくても良いのかもしれない
参考文献