flutter - 如何修复 Flutter build_runner 错误:无法预编译 build_runner:build_runner:
问题描述
我正在开发两个 Flutter 项目,其中一个已经迁移到 null 安全并使用Flutter 2.0.5。第二个项目,即导致问题的项目,尚未迁移到 null 安全性并使用Flutter 1.22.6。只需重命名 Flutter SDK 文件夹即可切换项目。
现在的问题是build_runner
它只适用于Flutter 2.0.5。从Flutter 1.22.6flutter pub run build_runner build
项目内部调用时,失败并显示以下错误消息:
Failed to precompile build_runner:build_runner:
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/http_multi_server-2.1.0/lib/src/multi_headers.dart:97:8: Error: The method 'MultiHeaders.add' has fewer named arguments than those of overridden method 'HttpHeaders.add'.
void add(String name, Object value) {
^
org-dartlang-sdk:///sdk/lib/_http/http.dart:698:8: Context: This is the overridden method ('add').
void add(String name, Object value,
^
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/http_multi_server-2.1.0/lib/src/multi_headers.dart:129:8: Error: The method 'MultiHeaders.set' has fewer named arguments than those of overridden method 'HttpHeaders.set'.
void set(String name, Object value) {
^
org-dartlang-sdk:///sdk/lib/_http/http.dart:707:8: Context: This is the overridden method ('set').
void set(String name, Object value,
^
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner-1.11.0/lib/src/entrypoint/runner.dart:23:31: Error: No named parameter with the name 'usageLineLength'.
final argParser = ArgParser(usageLineLength: lineLength);
^^^^^^^^^^^^^^^
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/args-1.4.4/lib/src/arg_parser.dart:43:11: Context: Found this candidate, but the arguments don't match.
factory ArgParser({bool allowTrailingOptions: true}) =>
^
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner-1.11.0/bin/src/commands/clean.dart:18:31: Error: No named parameter with the name 'usageLineLength'.
final argParser = ArgParser(usageLineLength: lineLength);
^^^^^^^^^^^^^^^
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/args-1.4.4/lib/src/arg_parser.dart:43:11: Context: Found this candidate, but the arguments don't match.
factory ArgParser({bool allowTrailingOptions: true}) =>
^
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/build_runner-1.11.0/bin/src/commands/generate_build_script.dart:18:31: Error: No named parameter with the name 'usageLineLength'.
final argParser = ArgParser(usageLineLength: lineLength);
^^^^^^^^^^^^^^^
../../../Flutter%20SDK/flutter/.pub-cache/hosted/pub.dartlang.org/args-1.4.4/lib/src/arg_parser.dart:43:11: Context: Found this candidate, but the arguments don't match.
factory ArgParser({bool allowTrailingOptions: true}) =>
奇怪的是,所有这些错误都在项目之外。调用flutter clean
并flutter pub cache repair
没有效果。所以问题是,需要做什么才能开始build_runner
工作(现在已经过时了)Flutter version 1.22.6
?非常欢迎您的建议,谢谢!
解决方案
因为所需的第三方库阻止了迁移到 null 安全,所以唯一的解决方案是通过从生成的 json 切换到手写的来消除 build_runner。
与其说是解决方案,不如说是一种解决方法,但这已经足够了。
推荐阅读
- r - 性能错误(pred、“tpr”、“fpr”)
- python - __getattr__ 返回一个自身的类时会做什么?
- python - 修复 try 和 except 中的无效语法错误
- android - Android 中用于 Cast 连接的广播接收器
- css - 从右向左滑动背景图像,然后从左向右滑动
- javascript - 如何在完整日历中获取日期和倾斜 onclick 标题
- python-3.x - Mongodb upsert 文档或 $addToSet
- angularjs - 使用angularjs在模态上绑定编辑数据
- laravel - Minishift - 如何编辑从 bitbucket 存储库部署的项目的文件
- arrays - 将值写入动态数组 VBA