运行build_runner时riverpod_generator预编译失败的问题求助
运行build_runner时riverpod_generator预编译失败的问题求助
我一直在用Flutter的Riverpod配合riverpod_generator做练习,之前所有功能都正常,dart run build_runner watch -d也能自动生成.g.dart文件。但突然出问题了,现在运行build runner时直接报错,完全没法继续开发,已经卡了两天,试过各种办法都没用,实在没办法才来求助!
我运行dart run build_runner build -v后,得到的错误信息如下:
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相关依赖版本(包括开发依赖)
- 完全重新安装Flutter,同时删除
appdata/Local/Pub文件夹,并且通过Android Studio更新了platform-tools、SDK等 - 多次执行
flutter pub upgrade --major-versions升级依赖 - 查阅过相关的问题讨论帖
实在是没办法了,有没有大佬能帮我解决这个问题,让我能继续练习Riverpod?如果需要更多信息我随时补充!
备注:内容来源于stack exchange,提问作者Johny Gates
相关产品推荐
相关产品推荐

