Выбор ответа Junior Платформенные каналы обновлено

Flutter: MissingPluginException

Вопрос

Что обычно означает MissingPluginException после добавления плагина?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нативная часть не зарегистрирована, обычно помогает полная пересборка. Исключение говорит, что на другой стороне канала нет обработчика.

Варианты ответа

  1. Плагин несовместим с Dart 3 и должен быть обновлён до версии с null-safety
  2. У приложения нет разрешения на доступ к сети, и канал не может соединиться
  3. Нужно вызвать WidgetsFlutterBinding.ensureInitialized() в каждом виджете с плагином
  4. Нативная часть не зарегистрирована, обычно помогает полная пересборкаправильный ответ

Разбор

Исключение говорит, что на другой стороне канала нет обработчика. Типичная причина: плагин добавили, но приложение не пересобрали, а hot reload и hot restart нативный код не перекомпилируют. Другие причины: платформа не поддерживается плагином или канал вызван из фонового изолята без инициализации. ensureInitialized вызывают один раз в main, если до runApp нужны каналы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.