iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
🐙

How to change Provider names generated by Riverpod Generator

に公開

Introduction

With the recent major version update to 2 and the addition of various features, many people might have started using riverpod_generator.
In this article, I will show you how to change the names of the Providers generated by riverpod_generator.

How to Change

You can change the generation options by editing the build.yaml file in the project root.
If you don't have build.yaml, let's create one.

The following is taken directly from the 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

There are two options: provider_name_suffix and provider_family_name_suffix.

### provider_name_suffix

provider_name_suffix is an option to change the name of the generated Provider.

Normally, when there is a function called hoge like the following:

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

hogeProvider is what gets generated.

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

If you set provider_name_suffix to Pod here:

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

hogePod will be generated instead.

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

### provider_family_name_suffix

`provider_family_name_suffix` is also an option for changing the name of the generated Provider, but this one specifically changes only the names of Providers with parameters (Family Providers).

Suppose you have functions `hoge` and `fuga` as shown below, where only `fuga` has a parameter `x`:

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

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

If you set `provider_family_name_suffix` to "ProviderFamily" here:

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

Only the `fuga` side becomes `fugaProviderFamily`.

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

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

### Others

Since `provider_family_name_suffix` takes precedence over `provider_name_suffix`, you can do the following:

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

This results in `hogePod` and `fugaPodFamily`.

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

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

Summary

In this article, I introduced how to change the names of Providers generated by riverpod_generator.
Normally, everything is named xxProvider, but if that's not to your liking, please try changing the settings.

GitHubで編集を提案

Discussion