Недавний чейнджер изменений в анализаторе 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