Метод setMockMessageHandler не определен для класса BasicMessageChannel <dynamic>
После запуска проекта Flutter я получаю эту ошибку. Что я могу сделать, чтобы решить эту проблему?
Error: The method 'setMockMessageHandler'
isn't defined for the class 'BasicMessageChannel<dynamic>'.
FAILURE: Build failed with an exception.
6 ответов
У меня была такая же проблема после обновления плагина в AndroidStudio на Mac
flutter pub upgrade
ничего не сделал для меня, но
flutter clean
flutter pub upgrade --major-versions
решил проблему
Возникла эта проблема после обновления до Flutter 2.5.3 (с 2.2.3). Изменение, описанное в к примечанияхвыпуску, нарушило несколько сотен тестов, так как обработчики фиктивных методов были установлены в глобальном
setUp()
для большинства тестов.
Как показано в примечаниях к выпуску, я заменил код вроде
MethodChannel('channelName')
.setMockMethodCallHandler((MethodCall methodCall) {});
с кодом, использующим экземпляр по умолчанию
TestDefaultBinaryMessenger
:
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(MethodChannel('channelName'), (MethodCall methodCall) {});
Это изменение позволило мне сохранить все тесты без изменений.
- Перейдите к указанному классу BasicMessageChannel, нажав и удерживая ctrl, и щелкните по нему
- чем искать 'setMockMessageHandler' с помощью ctrl + F, чем вы увидите что-то вроде этого // Ищете setMockMessageHandler? // См. Этот пакет прокладок: packages / flutter_test / lib / src / deprecated.dart и вставьте эту строку под этим комментарием void setMockMessageHandler (динамическое сообщение) {
} но это просто хак, который не рекомендуется
Сегодня у меня была такая же проблема.
из того, что я мог заметить, это в основном было критическим изменением, вызванным переходом тестовых интерфейсов канала платформы на пакет flutter_test.
в моем случае проблема была решена простым запуском
flutter pub upgrade
в глобальной терминальной сессии.
см. более подробную информацию об упомянутом переходе в упомянутых примечаниях к выпуску
У меня такая же проблема, все перепробовал и не помогло.
flutter pub upgrade
а также
flutter pub upgrade --major-versions
выводит это:
Никаких зависимостей не изменилось.
1 пакет снят с производства.
76 пакетов имеют более новые версии, несовместимые с ограничениями зависимостей.
Пытаться
flutter pub outdated
для дополнительной информации.
Никаких изменений в pubspec.yaml! Плагины
advance_pdf_viewer, flutter_absolute_path, geocoder, google_api_headers, onesignal_flutter
используйте устаревшую версию встраивания Android. Чтобы избежать неожиданных сбоев во время выполнения или сбоев сборки в будущем, попробуйте проверить, поддерживают ли эти плагины встраивание Android V2. В противном случае рассмотрите возможность их удаления, поскольку в будущих выпусках Flutter эти устаревшие API будут удалены. Если вы являетесь автором плагина, ознакомьтесь с документацией по переносу плагина на встраивание V2: https://flutter.dev/go/android-plugin-migration .
1
- : обновление паба Flutter
- : порхать чисто
- : обновление флаттера паба --major-versions
- : компакт-диск iOS
- : обновление репозитория подов
- : обновление модуля
- : откройте Runner.xcworkspace
- : сделать чистоту и запустить