Open5

Riverpod なぜコード生成するのかわかんない人向け

kabikirakabikira

@riverpod アノテーションのコード生成で自動的に作られるのは6種類だけ

種別 生成されるプロバイダ
関数ベース Provider / FutureProvider / StreamProvider
(戻り値が T / Future<T> / Stream<T> で決定)(Riverpod)
クラスベース NotifierProvider / AsyncNotifierProvider / StreamNotifierProvider
(継承元が Notifier / AsyncNotifier / StreamNotifier で決定)(Riverpod)
kabikirakabikira

現状のコード生成で増えるプロバイダーはこの6種類+その family / autoDispose 変種だけ、と覚えておけば大丈夫

kabikirakabikira

二つのその派生を使えばいい
それを迷わなくさせたのが生成コード

Provider
派生
 FutureProvider
 StreamProvider

NotifierProvider
派生
 AsyncNotifierProvider
 StreamNotifierProvider

使わなくていい
❌StateNotifierProvider
NotifierProvider の方が混乱が少ない

❌ChangeNotifierProvider
NotifierProviderでいい

❌StateProvider
Riverpod の Discord サーバーなどで頻繁に非推奨である旨が発言
基本的に (Provider ではなく) StateProvider を使いたい場合というのは、state を外部から変更したい場合になると思いますので、この場合は NotifierProvider (とその派生)

❌StateNotifierProvider
NotifierProvider を推奨