Метод 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) {});

Это изменение позволило мне сохранить все тесты без изменений.

  1. Перейдите к указанному классу BasicMessageChannel, нажав и удерживая ctrl, и щелкните по нему
  2. чем искать '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

  1. : обновление паба Flutter
  2. : порхать чисто
  3. : обновление флаттера паба --major-versions
  4. : компакт-диск iOS
  5. : обновление репозитория подов
  6. : обновление модуля
  7. : откройте Runner.xcworkspace
  8. : сделать чистоту и запустить
Другие вопросы по тегам