为什么 riverpod 甚至无法在项目中初始化?未找到方法:'Error.throwWithStackTrace'
Why is riverpod failing even to initialize in project? Method not found: 'Error.throwWithStackTrace'
所以我正在尝试开始使用 riverpod 并使用“点击和计数器”默认示例创建一个新的 flutter 项目。
一旦我添加了 pubspec
flutter_hooks: ^0.18.0
hooks_riverpod: ^2.0.0
和
import '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) {
^
我看到了。
试试 flutter pub upgrade
怎么样?
如果未解决,则检查 analyzer
版本并检查哪个依赖项锁定了它。
Error.throwWithStackTrace
已添加到 Dart 2.16(Flutter 2.10 版,2022 年 2 月 8 日起)。
https://api.flutter.dev/flutter/dart-core/Error/throwWithStackTrace.html
(检查 @Since
注释。)
如果您的 Flutter/Dart 版本低于该版本,您将看到您看到的错误。
可能有帮助的两个选项是:
- 指定依赖项的确切版本(不要在版本之前使用
^
)
- 将 Flutter/Dart 至少升级到 2.10/2.16
flutter upgrade
如果您的问题包(hooks_riverpod: ^2.0.0
在您的情况下)与 ^
一起列出,它将 。
我猜想当您创建一个新项目并使用相同的依赖版本时,最初 pub get
它下载了更新版本的包( 或 该包使用的依赖项的较新版本) 到依赖于新错误 API 方法的“pub 缓存”。
您的项目会将此信息存储在:
<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 可能是有意义的 # 当它依赖于 2.0 时不存在的新核心 Dart API 方法.0 已发布。
备注
riverpod 的作者还为 Error.throwWithStackTrace
编写了新的 API,因此 hooks_riverpod 的最新版本可能正在使用最新的 API 更改。 (您列出的版本 2.0.0 目前是 pre-release)。您可以在 pubspec.yaml(例如 1.0.3)
中尝试早期版本的 riverpod
对于使用 firebase 遇到“找不到方法:'Error.throwWithStackTrace'”的任何人。
尝试将此添加到您的 pubspec.yaml
dependency_overrides:
firebase_messaging_platform_interface: 3.1.6
如 中所述,Error.throwWithStackTrace
最近被添加到 Dart 2.16 中。
如果您收到有关 Error.throwWithStackTrace
未找到某些软件包的错误,则软件包作者忽略了更新其软件包的最低 Dart SDK 版本。你应该向包维护者报告。同时,您应该使用较早版本的问题包或使用较新版本的Dart SDK。
尝试运行 flutter 升级
通过这个它会升级你的 flutter 和 dart SDK 版本,希望它能解决你的问题
如果您在“flutter upgrade”后仍然遇到问题,或者您在 pubspec.yaml
中使用了这行代码
dependency_overrides:
firebase_messaging_platform_interface: 3.1.6
您收到此类错误
java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)
at com.sun.tools.javac.util.Assert.error(Assert.java:133)
at com.sun.tools.javac.code.TypeAnnotations.annotationType(TypeAnnotations.java:231)
at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.separateAnnotationsKinds(TypeAnnotations.java:294)
at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.visitMethodDef(TypeAnnotations.java:1066)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.scan(TypeAnnotations.java:275)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
so 尝试升级你的 gradle 版本,这一行在你的 build.gradle
classpath 'com.android.tools.build:gradle:4.1.0'
这样做之后,它可能会要求您更改您的
gradle-wrapper.属性
distributionUrl=https://services.gradle.org/distributions/gradle-6.1.1-all.zip
到
distributionUrl=https://services.gradle.org/distributions/gradle-6.5-all.zip
也升级这个包
firebase_core: ^1.10.0
firebase_messaging: ^11.1.0
所以我正在尝试开始使用 riverpod 并使用“点击和计数器”默认示例创建一个新的 flutter 项目。 一旦我添加了 pubspec
flutter_hooks: ^0.18.0
hooks_riverpod: ^2.0.0
和
import '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) {
^
我看到了
试试 flutter pub upgrade
怎么样?
如果未解决,则检查 analyzer
版本并检查哪个依赖项锁定了它。
Error.throwWithStackTrace
已添加到 Dart 2.16(Flutter 2.10 版,2022 年 2 月 8 日起)。
https://api.flutter.dev/flutter/dart-core/Error/throwWithStackTrace.html
(检查 @Since
注释。)
如果您的 Flutter/Dart 版本低于该版本,您将看到您看到的错误。
可能有帮助的两个选项是:
- 指定依赖项的确切版本(不要在版本之前使用
^
) - 将 Flutter/Dart 至少升级到 2.10/2.16
flutter upgrade
如果您的问题包(hooks_riverpod: ^2.0.0
在您的情况下)与 ^
一起列出,它将
我猜想当您创建一个新项目并使用相同的依赖版本时,最初 pub get
它下载了更新版本的包( 或 该包使用的依赖项的较新版本) 到依赖于新错误 API 方法的“pub 缓存”。
您的项目会将此信息存储在:
<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 可能是有意义的 # 当它依赖于 2.0 时不存在的新核心 Dart API 方法.0 已发布。
备注
riverpod 的作者还为 Error.throwWithStackTrace
编写了新的 API,因此 hooks_riverpod 的最新版本可能正在使用最新的 API 更改。 (您列出的版本 2.0.0 目前是 pre-release)。您可以在 pubspec.yaml(例如 1.0.3)
对于使用 firebase 遇到“找不到方法:'Error.throwWithStackTrace'”的任何人。 尝试将此添加到您的 pubspec.yaml
dependency_overrides:
firebase_messaging_platform_interface: 3.1.6
如 Error.throwWithStackTrace
最近被添加到 Dart 2.16 中。
如果您收到有关 Error.throwWithStackTrace
未找到某些软件包的错误,则软件包作者忽略了更新其软件包的最低 Dart SDK 版本。你应该向包维护者报告。同时,您应该使用较早版本的问题包或使用较新版本的Dart SDK。
尝试运行 flutter 升级
通过这个它会升级你的 flutter 和 dart SDK 版本,希望它能解决你的问题
如果您在“flutter upgrade”后仍然遇到问题,或者您在 pubspec.yaml
中使用了这行代码 dependency_overrides:
firebase_messaging_platform_interface: 3.1.6
您收到此类错误
java.lang.AssertionError: annotationType(): unrecognized Attribute name MODULE (class com.sun.tools.javac.util.UnsharedNameTable$NameImpl)
at com.sun.tools.javac.util.Assert.error(Assert.java:133)
at com.sun.tools.javac.code.TypeAnnotations.annotationType(TypeAnnotations.java:231)
at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.separateAnnotationsKinds(TypeAnnotations.java:294)
at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.visitMethodDef(TypeAnnotations.java:1066)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:778)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
at com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.scan(TypeAnnotations.java:275)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
so 尝试升级你的 gradle 版本,这一行在你的 build.gradle
classpath 'com.android.tools.build:gradle:4.1.0'
这样做之后,它可能会要求您更改您的 gradle-wrapper.属性
distributionUrl=https://services.gradle.org/distributions/gradle-6.1.1-all.zip
到
distributionUrl=https://services.gradle.org/distributions/gradle-6.5-all.zip
也升级这个包
firebase_core: ^1.10.0
firebase_messaging: ^11.1.0