🐙

Riverpod Generatorで生成されるProvider名を変える方法

2023/03/10に公開

はじめに

最近メジャーバージョンが2に上がり、諸々の機能もそろったことからriverpod_generatorを使い始めた人も多いのではないかと思います。
今回はriverpod_generatorで生成されるProviderの名前を変更する方法を紹介します。

変更方法

プロジェクト直下のbuild.yamlファイルを編集することで生成オプションを変更できます。
build.yamlがない場合は作りましょう。

以下はReadmeそのままです。

build.yaml
targets:
  $default:
    builders:
      riverpod_generator:
        options:
          # Could be changed to "Pod", such that riverpod_generator
          # would generate "countPod" instead of "countProvider"
          provider_name_suffix: "Provider" # (default)
          # Similar to provider_name_sufix, this is an option for renaming
          # providers with parameters ("families").
          # This takes precedence over provider_name_suffix.
          provider_family_name_suffix: "Provider" # (default)

provider_name_suffixとprovider_family_name_suffixという2つのオプションがあります。

provider_name_suffix

provider_name_suffixは生成されるProviderの名前を変えるオプションです。

通常以下のようなhogeという関数があったとき

hoge.dart

String hoge(HogeRef ref) {
  return 'hoge';
}

生成されるのはhogeProviderです。

hoge.g.dart
/// See also [hoge].
(hoge)
final hogeProvider = AutoDisposeProvider<String>.internal(

ここでprovider_name_suffixをPodとすると

build.yaml
targets:
  $default:
    builders:
      riverpod_generator:
        options:
          provider_name_suffix: "Pod"

hogePodが生成されるようになります。

hoge.g.dart
/// See also [hoge].
(hoge)
final hogePod = AutoDisposeProvider<String>.internal(

provider_family_name_suffix

provider_family_name_suffixも生成されるProviderの名前を変えるオプションですが、
こちらはパラメーターをもつProvider(Family Provider)のみの名前を変えます。

以下のようにhogeとfugaという関数があり、fugaにのみパラメーターxがあったとき

hoge.dart

String hoge(HogeRef ref) {
  return 'hoge';
}


String fuga(HogeRef ref, int x) {
  return 'hoge';
}

ここでprovider_family_name_suffixをProviderFamilyとすると

build.yaml
targets:
  $default:
    builders:
      riverpod_generator:
        options:
          provider_family_name_suffix: "ProviderFamily"

fugaのほうだけfugaProviderFamilyになっています。

hoge.g.dart
/// See also [hoge].
(hoge)
final hogeProvider = AutoDisposeProvider<String>.internal(

/// See also [fuga].
(fuga)
const fugaProviderFamily = FugaFamily();

その他

provider_family_name_suffixはprovider_name_suffixより優先されるので、以下のようにすれば

build.yaml
targets:
  $default:
    builders:
      riverpod_generator:
        options:
          provider_name_suffix: "Pod"
          provider_family_name_suffix: "PodFamily"

hogePodとfugaPodFamilyになります。

hoge.g.dart
/// See also [hoge].
(hoge)
final hogePod = AutoDisposeProvider<String>.internal(

/// See also [fuga].
(fuga)
const fugaPodFamily = FugaFamily();

まとめ

riverpod_generatorで生成されるProvider名を変更する方法を紹介しました。
通常はすべて〇〇Providerになりますが、好みでない人はぜひ設定を変更してみましょう。

GitHubで編集を提案

Discussion