Недавний чейнджер изменений в анализаторе Flutter привел к тому, что множество приложений начали давать сбои, особенно приложения, которые полагаются на build_runner
. Я искал в Google целый час и не смог найти решение проблемы, но в конце концов я решил, как ее решить.
Эта проблема
build_runner
раньше работал. Теперь это не так. Выдает такую ошибку:
Failed to precompile build_runner:build_runner: ../../Documents/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:1600:40: Error: Getter not found: 'topLevelVariable'. return kinds.contains(TargetKind.topLevelVariable); ^^^^^^^^^^^^^^^^ ../../Documents/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:2024:23: Error: Getter not found: 'topLevelVariable'. case TargetKind.topLevelVariable: ^^^^^^^^^^^^^^^^ ../../Documents/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:2024:23: Error: Type 'dynamic' of the case expression is not a subtype of type 'TargetKind' of this switch expression. - 'TargetKind' is from 'package:meta/meta_meta.dart' ('../../Documents/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.3.0/lib/meta_meta.dart'). case TargetKind.topLevelVariable: ^ ../../Documents/flutter/.pub-cache/hosted/pub.dartlang.org/analyzer-1.6.0/lib/src/error/best_practices_verifier.dart:2001:13: Context: The switch expression is here. switch (this) {
Исправление
Принудительное использование анализатора более ранней версии в вашем pubspec.yaml
. Я знаю, вы ненавидите переопределение зависимостей, и я тоже, но пока это не будет исправлено , это единственный способ. Добавьте это переопределение зависимости в свой pubspec.yaml
.
dependency_overrides:
analyzer: '1.5.0'
Тогда flutter pub get
и тебе пора идти.
Подробнее о проблеме в этом выпуске GitHub.
Следите за сообществом Flutter в Twitter: https://www.twitter.com/FlutterComm