为什么Riverpod在项目中甚至无法初始化?找不到方法:'Error.throwWithStackTrace' [英] Why is riverpod failing even to initialize in project? Method not found: 'Error.throwWithStackTrace'

查看:10
本文介绍了为什么Riverpod在项目中甚至无法初始化?找不到方法:'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批注)

如果您的扑翼/飞镖版本低于该值,则会出现您看到的错误。

可以帮助的两个选项是:

  1. 指定依赖项的确切版本(不要在版本之前使用^)
  2. 将颤动/省道升级到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在项目中甚至无法初始化?找不到方法:&#39;Error.throwWithStackTrace&#39;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆