Выбор ответа Junior Платформенные каналы спрашивают часто обновлено
Flutter: MethodChannel
Вопрос
Что верно про вызов MethodChannel.invokeMethod?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Вызов асинхронный: Dart получает Future, натив отвечает через result. Каналы асинхронны: Dart получает Future, нативный обработчик отвечает через result.
Варианты ответа
- Вызов синхронный и блокирует UI до ответа платформы, поэтому его делают в изоляте
- Он работает только на Android, а на iOS для того же используется другой API
- Вызов асинхронный: Dart получает
Future, натив отвечает черезresultправильный ответ - Аргументы передаются как ссылки на объекты Dart, без копирования и сериализации
Разбор
Каналы асинхронны: Dart получает Future, нативный обработчик отвечает через result. Ошибка с платформы превращается в PlatformException, отсутствие обработчика в MissingPluginException. Каналы есть на всех платформах, а аргументы сериализуются кодеком, ссылки на объекты Dart не передаются.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.