如何使用 Riverpod 生成器生成提供商?

iDe*_*ode 5 flutter riverpod riverpod-generator

有了riverpod_generator,我可以使用:

@riverpod
int foo(FooRef ref) => 0;
Run Code Online (Sandbox Code Playgroud)

这相当于:

final fooProvider = Provider((ref) => 0);
Run Code Online (Sandbox Code Playgroud)

FutureProvider但我怎样才能为其他提供商(如、等)做同样的事情StateProvider呢?

iDe*_*ode 12

通过代码生成,您可以简化您的提供程序声明。主要有五个提供程序,您可以了解如何为每个提供程序生成等效代码。

  1. Provider

    相当于

    final fooProvider = Provider((ref) => 0);
    
    Run Code Online (Sandbox Code Playgroud)

    @riverpod
    int foo(FooRef ref) => 0;
    
    Run Code Online (Sandbox Code Playgroud)
  2. FutureProvider

    相当于

    final fooProvider = FutureProvider((ref) async {
      return 0;
    });
    
    Run Code Online (Sandbox Code Playgroud)

    @riverpod
    Future<int> foo(FooRef ref) async {
      return 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. StateProvider

    相当于

    final fooProvider = StateProvider((ref) => 0);
    
    Run Code Online (Sandbox Code Playgroud)

    @riverpod
    class Foo extends _$Foo {
      @override
      int build() => 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)