Flutter Riverpod - .autoDispose - 无法将参数类型 'AutoDisposeProvider' 分配给参数类型 'AlwaysAliveProviderBase'

标签 flutter dart riverpod

根据 the docs当我收到此错误时,我应该用 .autoDispose 标记两个 Providers:

The argument type 'AutoDisposeProvider' can't be assigned to the parameter type 'AlwaysAliveProviderBase'

为什么我在这个简约示例中仍然遇到错误?

final a = FutureProvider.autoDispose<List<String>>((ref) {
  return Future.value(["test"]);
});

final b = FutureProvider.autoDispose<List<String>>((ref) {
  return ref.watch(a);
});

最佳答案

发生此错误是因为您试图在未标有 .autoDispose 的提供程序中监听标有 .autoDispose 的提供程序。

final firstProvider = Provider.autoDispose((ref) => 0);

final secondProvider = Provider((ref) {
  // The argument type 'AutoDisposeProvider<int>' can't be assigned to the
  // parameter type 'AlwaysAliveProviderBase<Object, Null>'
  ref.watch(firstProvider);
});

解决方案是用 .autoDispose 标记 secondProvider。

final firstProvider = Provider.autoDispose((ref) => 0);

final secondProvider = Provider.autoDispose((ref) {
  ref.watch(firstProvider);
});

我只是从页面底部的官方 Riverpod 文档中复制解决方案: https://riverpod.dev/docs/concepts/modifiers/auto_dispose/

关于Flutter Riverpod - .autoDispose - 无法将参数类型 'AutoDisposeProvider' 分配给参数类型 'AlwaysAliveProviderBase',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72982554/

相关文章:

google-maps - 在 google_maps_flutter 中获取可见标记

flutter - Flutter 的绝对位置

ios - Unicode 规范化不适用于 ASCII-8BIT

dart - 如何获取响应的授权 header ?

flutter - 尽管 Stream.empty() 在数据库为空时应该返回,但为什么 RiverPod StreamProvider 仍停留在加载状态

flutter - 有没有办法让 Riverpod 进行急切加载?

flutter - 如何在Flutter中创建工作侧栏

ios - Flutter iOS 应用需要 Google 登录密码

search - 有没有办法在用户停止输入后发送请求?

flutter - websocket 自动重新连接 flutter 和 Riverpod?