无法使用 Riverpod 观看对象实例

Eig*_*ice 4 dart flutter flutter-web riverpod

在 Flutter Web 项目中,我遇到了 Riverpod 的问题:

Consumer(
  builder: (context, watch, child) {
    final om=watch(human);  
    return Text(om.name); }
Run Code Online (Sandbox Code Playgroud)

“watch”带有下划线,编译器说:The expression doesn't evaluate to a function, so it can't be invoked. 快速修复建议是将 human 从括号中删除。当然,当我还有一些战斗力时,这不会发生。这是人类的定义:

final human=ChangeNotifierProvider((ref)=>Human()); 

class Human with ChangeNotifier{String name="tananana";}
Run Code Online (Sandbox Code Playgroud)

我无法告诉你我正在导入哪个版本的 Riverpod,因为我不得不在 pubspec.yaml 中未指定它,以便它可以解决与其他导入的冲突,但我使用的是通道主运行版本2.9.0-1.0.294 之前

任何建议都会受到重视。

Rém*_*let 7

您很可能使用 Riverpod 1.0.x 版本,它更改了监听提供程序的语法。

TL;DR,Consumer不接收“watch”作为参数,而是接收“ref”。因此,要观看提供商,您需要执行以下操作:

Consumer(
  builder: (context, ref, child) {
    final om = ref.watch(human);
Run Code Online (Sandbox Code Playgroud)

请参阅迁移指南以获取更多信息