我一直在用 riverpod_generator 练习riverpod,一切都很好。命令dart run build_runner watch -d
也完美地运行并生成.g.dart
文件,突然出现问题,我在运行build runner时显示了这个错误:
user@name MINGW64 /a/flutter_code/aa
$ dart run build_runner build -v
[INFO] Entrypoint:Generating build script...
[INFO] Entrypoint:Generating build script completed, took 663ms
[INFO] Bootstrap:Precompiling build script......
[WARNING] Bootstrap:
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/functional_provider.dart:38:33: Error: The getter
'createdType' isn't defined for the class 'FunctionalProviderDeclaration'.
- 'FunctionalProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'createdType'.
final returnType = provider.createdType;
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/functional_provider.dart:61:48: Error: The getter
'valueType' isn't defined for the class 'FunctionalProviderDeclaration'.
- 'FunctionalProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
final $providerName = $providerType<${provider.valueType}>.internal(
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/functional_provider.dart:69:50: Error: The getter
'valueType' isn't defined for the class 'FunctionalProviderDeclaration'.
- 'FunctionalProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
typedef $refName = ${providerType}Ref<${provider.valueType}>;
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/class_based_provider.dart:101:33: Error: The getter 'createdType' isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'createdType'.
final returnType = provider.createdType;
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/class_based_provider.dart:115:66: Error: The getter 'valueType' isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
final $providerName = $providerType<${provider.name}, ${provider.valueType}>.internal(
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/class_based_provider.dart:123:61: Error: The getter 'valueType' isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
typedef $notifierTypedefName = $notifierBaseType<${provider.valueType}>;
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:55:32: Error: The getter 'createdType' isn't defined for the class 'FunctionalProviderDeclaration'.
- 'FunctionalProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'createdType'.
var createdType = provider.createdType.toString();
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:57:33: Error: The getter 'createdType' isn't defined for the class 'FunctionalProviderDeclaration'.
- 'FunctionalProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'createdType'.
final returnType = provider.createdType;
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:65:44: Error: The getter 'valueType' isn't defined for the class 'FunctionalProviderDeclaration'.
- 'FunctionalProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
createdType = 'FutureOr<${provider.valueType}>';
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:90:38: Error: The getter 'valueType' isn't defined for the class 'FunctionalProviderDeclaration'.
- 'FunctionalProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
providerGenerics: '<${provider.valueType}>',
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:134:33: Error: The getter 'createdType' isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'createdType'.
final returnType = provider.createdType;
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:167:56: Error: The getter 'valueType'
isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
providerGenerics: '<${provider.name}, ${provider.valueType}>',
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:172:74: Error: The getter 'valueType'
isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
abstract class $notifierTypedefName extends $notifierBaseType<${provider.valueType}> {
^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:175:14: Error: The getter 'createdType' isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'createdType'.
${provider.createdType} build($parameterDefinition);
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:180:14: Error: The getter 'createdType' isn't defined for the class 'ClassBasedProviderDeclaration'.
- 'ClassBasedProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'createdType'.
${provider.createdType} runNotifierBuild(
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:248:45: Error: The getter 'exposedType' isn't defined for the class 'GeneratorProviderDeclaration'.
- 'GeneratorProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'exposedType'.
class $familyName extends Family<${provider.exposedType}> {
^^^^^^^^^^^
/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_generator-2.3.4/lib/src/templates/family.dart:332:43: Error: The getter 'valueType'
isn't defined for the class 'GeneratorProviderDeclaration'.
- 'GeneratorProviderDeclaration' is from 'package:riverpod_analyzer_utils/src/riverpod_ast.dart' ('/C:/Users/user@name/AppData/Local/Pub/Cache/hosted/pub.dev/riverpod_analyzer_utils-0.4.1/lib/src/riverpod_ast.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'valueType'.
mixin $refNameImpl on $refType<${provider.valueType}> {
^^^^^^^^^
[INFO] Bootstrap:Precompiling build script... completed, took 1.9s
[SEVERE] Bootstrap:
Failed to precompile build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.
pubspec.yaml:
name: aa
description: A new Flutter project.
publish_to: "none"
version: 0.1.0
environment:
sdk: ">=3.1.4 <4.0.0"
dependencies:
flutter:
sdk: flutter
flutter_riverpod: ^2.4.4
riverpod_annotation: ^2.2.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0
riverpod_generator: ^2.3.4
build_runner: ^2.4.6
custom_lint: ^0.5.4
riverpod_lint: ^2.0.2
flutter:
uses-material-design: true
我已经尝试过的:
flutter clean
->flutter pub cache clean
->dart run build_runner build clean
- 尝试所有Riverpod依赖项的以前工作版本,包括dev依赖项
- 重新安装Flutter完全沿着删除 appdata/Local/Pub 文件夹;以及从Android Studio更新平台工具、SDK等。
- 多次尝试更新依赖项
flutter pub upgrade --major-versions
- 通过this和this
两天了,我一直在这一点上停滞不前,找不到解决办法。在这里问是我最后的选择。如果需要的话,请询问更多的信息,并为我提供重新开始练习的解决方案。
2条答案
按热度按时间niwlg2el1#
看起来最新版本的riverpod不工作了。这个问题提供了更多的背景:https://github.com/rrousselGit/riverpod/issues/2943
编辑:一个对我有效的解决方法是使用riverpod_generator 3.0.0-dev.3。查看此评论:https://github.com/rrousselGit/riverpod/issues/3005#issuecomment-1766892690
eivnm1vs2#
从@MatthewWong提供的消息来源来看,riverpod的开发者自己声称,
riverpod_analyzer_util中的一个破坏性更改,带有不正确的版本号凸起。
-Remi Risselet [来源]
因此,到目前为止,有两个解决方案:
1.正如@MatthewWong提到的来源是用途:
如果需要最新的(工作)开发版本。
1.如果需要最新的稳定版本,以下两个插件的版本组合都可以正常工作:
在 riverpod_generator 中进行了必要的更改之前,这些变通方法工作得很好。
不需要Flutter SDK降级,解决方案在最新的Dart和Flutter SDK版本中运行良好。