Error.throwWithStackTrace
已在 Dart 2.16(2022 年 2 月 8 日起的 Flutter 版本 2.10)中添加。
https://api.flutter.dev/flutter/dart-core/Error/throwWithStackTrace.html
(检查@Since
注解。)
如果您的 Flutter/Dart 版本低于该版本,您将收到您看到的错误。
两个选项may帮助是:
- 指定依赖项的确切版本(不要使用
^
提前于版本)
- 将 Flutter/Dart 升级到至少 2.10/2.16
flutter upgrade
如果您的有问题的包裹(hooks_riverpod: ^2.0.0
在你的情况下)列出了^
, it'll 使用不破坏依赖关系的最新版本.
我猜当您创建一个新项目并使用相同的依赖项版本时,在初始时pub get
它下载了更新版本的软件包(or该包使用的依赖项的较新版本)放入“pub 缓存”中,该缓存依赖于新的 Error API 方法。
您的项目将将此信息存储在:
<your_project_dir>/dart_tool/package_config.json
The min Dart SDK
为软件包列出的版本通常应从 2.12 更改为 2.16。 (更新:这是现已更新)这会给我们一个提示,如果我们发现构建失败,我们需要更新 Flutter/Dart。
在这个答案的早期版本中,我注意到^
包依赖版本上的前缀应该可以防止这些类型的问题,但我不再确定它是否意味着涵盖底层平台需要更新的情况(而不是包本身的 API 中的重大更改) )。
不管怎样,乍一看,当包版本依赖于 2.0.0 发布时不存在的新核心 Dart API 方法时,从 2.0.0 升级到 3.0.0 可能是有意义的。
Notes
Riverpod的作者还为Error.throwWithStackTrace
因此,最新版本的 hooks_riverpod 可能正在使用最新的 API 更改。 (您列出的版本 2.0.0 目前是预发布版本)。您可以在 pubspec.yaml 中尝试早期版本的 Riverpod(例如 1.0.3)