Выбор ответа Junior Платформенные каналы спрашивают часто обновлено

Flutter: MethodChannel

Вопрос

Что верно про вызов MethodChannel.invokeMethod?

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

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

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

Коротко

Правильный ответ: Вызов асинхронный: Dart получает Future, натив отвечает через result. Каналы асинхронны: Dart получает Future, нативный обработчик отвечает через result.

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

  1. Вызов синхронный и блокирует UI до ответа платформы, поэтому его делают в изоляте
  2. Он работает только на Android, а на iOS для того же используется другой API
  3. Вызов асинхронный: Dart получает Future, натив отвечает через resultправильный ответ
  4. Аргументы передаются как ссылки на объекты Dart, без копирования и сериализации

Разбор

Каналы асинхронны: Dart получает Future, нативный обработчик отвечает через result. Ошибка с платформы превращается в PlatformException, отсутствие обработчика в MissingPluginException. Каналы есть на всех платформах, а аргументы сериализуются кодеком, ссылки на объекты Dart не передаются.

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

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