我一直在从事这个 flutter 项目,由于各种原因我需要代码生成,例如 Riverpod 提供程序和冻结模型。所以我使用
build_runner
包来生成这个 .g.dart
文件,但是当我运行 dart run build_runner watch
时突然出现此错误:
[INFO] Generating build script completed, took 152ms
[WARNING] ../../../../../.pub-cache/hosted/pub.dev/riverpod_generator-3.0.0-dev.4/lib/src/templates/family.dart:230:48: Error: The getter 'metadata' isn't defined for the class 'AstNode'.
- 'AstNode' is from 'package:analyzer/src/dart/ast/ast.dart' ('../../../../../.pub-cache/hosted/pub.dev/analyzer-6.2.0/lib/src/dart/ast/ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'metadata'.
final meta = metaAnnotations(provider.node.metadata);
^^^^^^^^
[INFO] Precompiling build script... completed, took 625ms
[SEVERE] Failed to precompile build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.
我看过几篇关于这个问题的帖子,但任何建议的答案似乎都有效。 所以我尝试了几件事:
dart run build_runner build --delete-conflicting-outputs
删除 pubspec.lock
文件 flutter clean
和 flutter pub get
使用 flutter pub upgrade
将软件包升级到最新版本
按照一篇文章中的建议添加 analyzer
依赖包。
尝试过 dart run build_runner doctor
但得到了相同的输出。
我还尝试了 flutter chache repair
和 flutter pub get
并手动删除缓存存储的 int.dart_tool/
目录,但没有任何效果。
我已经被困在这个问题上几个小时了,但没有任何效果,我不知道可能出了什么问题。
这是我的pubscpec.yaml
文件
name: myapp
description: A new Flutter project.
publish_to: none
version: 1.0.0+1
environment:
sdk: '>=3.0.5 <4.0.0'
flutter: ">=3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
flutter_riverpod: ^2.3.6
riverpod_annotation: ^2.2.0
analyzer:
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
riverpod_generator: ^3.0.0-dev.3
riverpod_lint: ^2.3.0
build_runner: ^2.4.6
flutter:
assets:
- lib/shared/assets/images/
fonts:
- family: Mont-Bold
fonts:
- asset: lib/shared/assets/fonts/Mont-Bold.otf
- family: Mont-SemiBold
fonts:
- asset: lib/shared/assets/fonts/Mont-SemiBold.otf
- family: Mont-Heavy
fonts:
- asset: lib/shared/assets/fonts/Mont-Heavy.otf
uses-material-design: true
3.0.0-dev.4
的riverpod_generator
版本有问题,暂时可以通过删除3.0.0-dev.3
来严格使用^
:
dev_dependencies:
riverpod_generator: 3.0.0-dev.3