为什么 Riverpod 在项目中甚至无法初始化?找不到方法:'Error.throwWithStackTrace'

2023-12-12

因此,我尝试开始使用 Riverpod 并使用“点击和计数器”默认示例创建一个新的 flutter 项目。 一旦我添加了 pubspec

flutter_hooks: ^0.18.0
hooks_riverpod: ^2.0.0

And

导入'包: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) {
      ^

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帮助是:

  1. 指定依赖项的确切版本(不要使用^提前于版本)
  2. 将 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)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Riverpod 在项目中甚至无法初始化?找不到方法:'Error.throwWithStackTrace' 的相关文章

随机推荐