Nota: A versão do Flutter utilizada na experiência é a 3.29.2.
Durante a instalação de dependências, ao optar por instalar via linha de comando, foi instalado as versões mais recentes (na data deste post) das dependências no projeto: mockito 5.4.5 e build_runner 2.4.15.
Ao executar o comando flutter pub run build_runner build
conforme vídeo, foi gerado o seguinte erro:
[WARNING] ../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:845:23: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
- 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
- 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
.getInterface(interfaceElement)
^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1173:26: Error: Can't assign spread elements of type 'TypeParameterElement' to collection elements of type 'TypeParameterElementImpl'.
- 'TypeParameterElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
- 'TypeParameterElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
...classToMock.typeParameters,
^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1174:15: Error: Can't assign spread elements of type 'TypeParameterElement' to collection elements of type 'TypeParameterElementImpl'.
- 'TypeParameterElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
- 'TypeParameterElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
...?aliasedElement?.typeParameters,
^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1180:27: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
- 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
- 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
.getInterface(classToMock)
^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1792:65: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
- 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
- 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
final overriddenMethods = inheritanceManager.getOverridden2(class_, name);
^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1800:46: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
- 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
- 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
overriddenMethod.enclosingElement3 as InterfaceElement, name);
^
[INFO] Precompiling build script... completed, took 645ms
[SEVERE] Failed to precompile build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.
Failed to update packages.
Para resolver, além de utilizar as versões do vídeo, necessitei sobrescrever as versões das dependências indiretas test_api para 0.5.2 e matcher para 0.12.15. No final, a parte de dependências do pubspec.yaml
ficou assim:
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.8
http: ^1.3.0
mockito: 5.3.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
build_runner: 2.2.0
dependency_overrides:
test_api: 0.5.2
matcher: 0.12.15
Com isso foi possível executar o comando flutter pub run build_runner build
com sucesso.