因此,我正在try 开始使用Riverpod,并使用"单击和计数器"默认示例创建一个新的Flutter 项目. 一旦我添加了发布规范

flutter_hooks: ^0.18.0
hooks_riverpod: ^2.0.0

导入‘Package:hooks_riverpod/hooks_riverpod.dart’;

我在调试控制台上收到此错误,但无法找出问题所在

: Error: Method not found: 'Error.throwWithStackTrace'.
../…/framework/provider_base.dart:904
  Error.throwWithStackTrace(error, chain);
        ^^^^^^^^^^^^^^^^^^^
: Error: A non-null value must be returned since the return type 'Never' doesn't allow null.
../…/framework/provider_base.dart:898
Never _rethrowProviderError(Object error, StackTrace stackTrace) {
      ^

推荐答案

Dart 2.16中增加了Error.throwWithStackTrace(Flutter 版本2.10,从2022年2月8日开始).

https://api.flutter.dev/flutter/dart-core/Error/throwWithStackTrace.html

(判断@Since注释.)

如果您的Flutter 翼/dart 版本低于该值,则会出现您看到的错误.

may提供帮助的两个选项是:

  1. 指定依赖项的确切版本(不要在版本之前使用^)
  2. 将Flutter /省道升级到至少2.10/2.16
flutter upgrade

因为hooks_riverpod: ^2.0.0依赖项与^一起列出,所以它将是use the latest version that doesn't break dependencies.

我猜测,当您创建一个新项目并使用相同的依赖项版本时,在初始版本为pub get时,它会将较新版本的hooks_riverpod(使用的是依赖项hooks_riverpod的较新版本101)下载到依赖于新的error API方法的"pub cache"中.

您的项目将在以下位置存储此信息:

<your_project_dir>/dart_tool/package_config.json

为软件包列出的min Dart SDK版本通常应该已从2.12更改为2.16.(更新:是been updated now)这会给我们一个提示,如果我们看到我们的构建失败,我们需要更新我们的Flutter 翼/dart .

在这个答案的早期版本中,我注意到包依赖版本上的^前缀应该可以防止这些类型的问题,但我不再确定它是为了涵盖需要更新底层平台的这种情况(而不是包本身的API发生突破性变化).

总之,乍一看,对于包版本,从2.0.0到3.0.0可能是有意义的,因为它依赖于一种新的核心Dart API方法,而2.0.0发布时并不存在这种方法.

Notes

riverpod的作者还为Error.throwWithStackTrace编写了新的API,因此hooks_riverpod的最新版本很可能正在使用最新的API更改.(您列出的2.0.0版本目前是预发布的).您可以在pubspec中try riverpod的早期版本.yaml(如1.0.3)

Flutter相关问答推荐

如何为Android 12及以上设备以及Android 11及以下设备动态处理Splash Screen?如果可能的话没有包裹

Riverpod状态管理-在调用请求时更新用户界面

如何知道当前屏幕是否处于抖动状态?

从超级应用程序启动时,Flutter 小应用程序中未加载资源

Flutter :URI的目标不存在

顶部对齐ListTile的[前导、标题、尾随]小部件

Flutter类调用另一个类中的另一个方法失败

如何在巡逻测试期间重新启动dart 侧应用程序状态?

如何将小部件代码移动到另一个文件以获得更好的可读性

处理 flutter/dart 模型中的空值

Flutter中有没有办法区分鼠标左右平移?

Flutter Riverpod 没有捕获 List 的嵌套值变化

NotifierProvider 每次更新都会重新构建并且值不更新

我无法找到修复此错误的位置,指出无法使用静态访问来访问实例成员

如何计算 Firestore 集合中的文档数量?

如何将此文本按钮剪辑在堆栈中的圆形头像上方?

如何让小部件根据小部件的大小构建不同的布局?

应用程序和应用程序内的 webview 之间的单点登录

如何从 showModalBottomSheet 中的 topRight 和 topLeft 移除平边

设计响应式卡片的最佳方法,以避免像素溢出错误或 _AssertionError