flutter Riverpod 2.0.2中未定义的类“Reader”

mpgws1up  于 2023-02-25  发布在  Flutter
关注(0)|答案(2)|浏览(116)

为了访问非widget类中的提供者,我使用了Reader函数。在将Riverpod依赖项更新到^2.0.2版本后,似乎Reader函数不再可用。您有什么建议吗?
我是否应该将Ref或WidgetRef作为参数传递给类构造函数?
当我传递WidgetRef时,它不识别状态和方法。

wpcxdonn

wpcxdonn1#

这是江荚二号的重大改变。
您应该将ref作为参数传递,并使用www.example.com(之前使用reader的地方)。ref.read where you used reader before.
示例:

final userTokenProvider = StateProvider<String>((ref) => null);

final repositoryProvider = Provider(Repository.new);

class Repository {
  Repository(this.ref);

  final Ref ref;

  Future<Catalog> fetchCatalog() async {
    String token = ref.read(userTokenProvider);

    final response = await dio.get('/path', queryParameters: {
      'token': token,
    });

    return Catalog.fromJson(response.data);
  }
}

https://riverpod.dev/docs/concepts/combining_providers/#can-i-read-a-provider-without-listening-to-it

f0brbegy

f0brbegy2#

你也可以定义一个自定义的“读取器”,虽然这并不推荐。但是,当你想逐渐迁移到新版本的Riverpod 2.0时,这可能会很方便

typedef Reader = T Function<T>(ProviderBase<T> provider);

相关问题