🐙

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

に公開

はじめに

最近メジャーバージョンが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)
```text

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

### provider_name_suffix

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

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

```dart:hoge.dart
@riverpod
String hoge(HogeRef ref) {
  return 'hoge';
}
```text

生成されるのはhogeProviderです。

```dart:hoge.g.dart
/// See also [hoge].
@ProviderFor(hoge)
final hogeProvider = AutoDisposeProvider<String>.internal(
```text

ここでprovider_name_suffixをPodとすると

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

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

```dart:hoge.g.dart
/// See also [hoge].
@ProviderFor(hoge)
final hogePod = AutoDisposeProvider<String>.internal(
```text

### provider_family_name_suffix

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

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

```dart:hoge.dart
@riverpod
String hoge(HogeRef ref) {
  return 'hoge';
}

@riverpod
String fuga(HogeRef ref, int x) {
  return 'hoge';
}
```text

ここでprovider_family_name_suffixをProviderFamilyとすると

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

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

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

/// See also [fuga].
@ProviderFor(fuga)
const fugaProviderFamily = FugaFamily();
```text

### その他

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

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

hogePodとfugaPodFamilyになります。

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

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

まとめ

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

GitHubで編集を提案

Discussion