Как спроектировать свой плагин
Вопрос
Вам нужно написать плагин для оплаты через нативный SDK банка на Android и iOS. Как вы его спроектируете?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Dart-API плагина: методы, модели, ошибки, без деталей SDK
Контракт через Pigeon, реализации на Kotlin и Swift
Асинхронность: результат оплаты через `Future`, события статуса через поток
Жизненный цикл Activity/ViewController, результат из другого экрана SDK
Тестируемость: интерфейс платформы подменяется в тестах Dart
Ошибки и коды: явные исключения, а не строки
Что могут спросить следом
- Как получить результат из Activity SDK на Android?
- Как тестировать Dart-часть без устройства?
Разбор
Образцовый ответ: «Сначала проектирую Dart-API: метод pay(PaymentRequest) возвращает Future<PaymentResult>, ошибки как свои исключения с кодами, модели неизменяемые. Контракт описываю в Pigeon, получаю интерфейсы для Kotlin и Swift. На Android SDK часто открывает свою Activity, поэтому плагин реализует ActivityAware, регистрирует обработчик результата и отвечает в Future, когда результат пришёл. На iOS аналогично через делегат или колбэк SDK. Статусы, если нужны, отдаю через EventChannel. Dart-часть отделяю интерфейсом платформы, как в federated-плагинах, чтобы в тестах подменить его фейком. Отдельно продумываю, что будет, если ОС убила процесс во время оплаты: итоговый статус всё равно подтверждается сервером»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.