为什么Riverpod在项目中甚至无法初始化?找不到方法:';Error.throwWithStackTrace'; [英] Why is riverpod failing even to initialize in project? Method not found: 'Error.throwWithStackTrace'
问题描述
因此,我正在尝试开始使用Riverpod,并使用";Click和Count";Default Sample创建一个新的颤动项目。 只要我添加发布规范
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) {
^
推荐答案
Error.throwWithStackTrace
是在DART 2.16(自2022年2月8日起推出的颤动版本2.10)中添加的。
https://api.flutter.dev/flutter/dart-core/Error/throwWithStackTrace.html
(检查@Since
批注)
如果您的扑翼/飞镖版本低于该值,则会出现您看到的错误。
可以帮助的两个选项是:
- 指定依赖项的确切版本(不要在版本之前使用
^
) - 将颤动/省道升级到2.10/2.16或更高版本
flutter upgrade
由于hooks_riverpod: ^2.0.0
依赖项与^
一起列出,因此它将use the latest version that doesn't break dependencies。
我猜测,当您创建新项目并使用相同依赖项版本时,在初始pub get
时,它将较新版本的hooks_riverpod(或使用的依赖项的较新版本)下载到依赖于新的Error API方法的";pub缓存中。
您的项目将此信息存储在:
<your_project_dir>/dart_tool/package_config.json
为该程序包列出的min Dart SDK
版本通常应从2.12更改为2.16。(更新:这是been updated now)这将给我们一个提示,如果我们看到我们的构建失败,我们需要更新我们的颤动/DART。
在此答案的早期版本中,我注意到包依赖版本上的^
前缀应该可以防止这种类型的问题,但我不再确定它是否意味着要涵盖底层平台需要更新的情况(而不是包本身的API的突破性变化)。
乍一看,当程序包版本#依赖于发布2.0.0时不存在的新核心Dart API方法时,从2.0.0升级到3.0.0可能是有意义的。
备注
riverpod的作者也为Error.throwWithStackTrace
编写了新的API,因此最新版本的hooks_riverpod很可能使用了最新的API更改。(您列出的2.0.0版本目前是预发布版本)。您可以在pubspec.yaml(如1.0.3)中尝试更早版本的riverpod
这篇关于为什么Riverpod在项目中甚至无法初始化?找不到方法:';Error.throwWithStackTrace';的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!