Работая над разнообразными бизнес-задачами с помощью Flutter, мы часто сталкиваемся с отсутствием готовых решений. Поэтому команда Mad Brains создает собственные и делится ими с ИТ-сообществом. В этом материале мы рассказываем, как наши библиотеки помогают Flutter-разработчикам и бизнесу.   Статья вышла в свет благодаря ведущему разработчику Flutter-направления Mad Brains Ильнару. Он и его коллеги создали и поддерживают библиотеки, о которых пойдет речь. AppMetrica‑Push‑Flutter Клиенту нужен был российский сервис пуш-уведомлений с поддержкой Android, iOS, Huawei. Из всего списка, что мы им представили, больше всего подошел Яндекс AppMetrica: в нем была как аналитика, так и нужные для заказчика пуши. На этапе анализа разных сервисов мы знали, что у AppMetrica есть SDK под Flutter на pub.dev. Она состоит из двух частей: AppMetrica SDK — ядро, включающее в себя аналитику и связь с сервером AppMetrica; AppMetrica Push SDK — включает обработку пушей и интеграцию с ядром. Проблема была в том, что плагин ядра под Flutter был хоть немного актуальным, а AppMetrica Push SDK под Flutter — нет: не поддерживался ряд возможностей, которые есть в нативном SDK и не поддерживался Huawei. В итоге мы сделали свой плагин на основе нативных AppMetrica Push SDK с полной поддержкой всего, что возможно, и поддержкой Huawei. Оно также требует ядро AppMetrica SDK для своей работы, поэтому мы интегрировали его с готовым плагином от Яндекса AppMetrica. Наш плагин заточен чисто под работу с пуш-кампанией Яндекса AppMetrica: получение и отображение Push-уведомлений; получение Silent Push-уведомлений (и автоматическое обновление токенов через Silent Push); обработка payload из уведомлений; отображение изображений в уведомлениях; поддержка действия deeplink при открытии уведомления; поддержка действия URL при открытии уведомления. Про интеграции можно прочитать тут — https://appmetrica.yandex.ru/about/. Для любителей видео-контента — ролики по теме на нашем YouTube-канале: Настройка пушей в Firebase+Flutter Кастомизация пушей в Android Настройка пушей в iOS Кастомизация пушей в iOS Недавно AppMetrica Push SDK для Flutter от Яндекса обновился, но там все еще нет ряда возможностей, которые есть в нашей библиотеке, и пока нет поддержки Huawei.  Tinkoff Acquiring В одном из проектов нам требовалось реализовать оплату товаров с помощью банковской карты, Google Pay, Apple Pay и обязательно через российский банк. Готовых решений для Flutter не было. Поэтому мы разработали первую открытую библиотеку Тинькофф для Flutter-разработчиков.  Функционал библиотеки: проведение платежей, в том числе рекуррентных; сохранение банковских карт клиента; получение информации о клиенте и сохраненных картах; управление сохраненными картами; интеграция с онлайн-кассами; оплата через Систему быстрых платежей (СБП), QR-ссылки. Об этом SDK мы подробно писали на Хабр. Правда, с момента выхода статьи значительная часть кодовой базы обновилась. А как создать Package, рассказываем в этом видео. Sberbank Acquiring Функционал похож на библиотеку Tinkoff Acquiring. История похожа: других библиотек для СберБанка на Flutter не было, поэтому написали свою. Был один нюанс — оплата у Сбера происходит только через их сайт, мы открываем окно оплаты в WebView. Возможности созданного решения: проведение платежей, в том числе рекуррентных; проведение платежей через Apple Pay или Google Pay; связанные платежи; интеграция с онлайн-кассами. Подробно про работу Системы быстрых платежей рассказываем тут. Yandex Geocoder В разработке приложения для сети химчисток BIANCA нам понадобилось определять координаты по адресу, который вводит пользователь, отображать их на карте и передавать на сервер. Так как у нас уже были планы использовать карты от Яндекса, то и сервис геокодирования решили взять от него. К сожалению, готового плагина на pub.dev не было, но зато было открытое API от Яндекса. Поэтому мы создали плагин и выложили его на pub.dev, так как мы понимали что это еще понадобится в будущем. Геокодер позволяет по названию адреса или объекта получить точные координаты, это прямое геокодирование. Также реализовано и обратное геокодирование путем ввода координат. Кроме того, в нем присутствуют подсказки при вводе адреса или объекта, что удобно для пользователей. Есть выбор топонима (когда вводят географическое название, например, города), а также возможность ограничить поиск указанной областью. Важное преимущество: геокодер от Яндекса умеет работать с русским языком и полностью совместим с Яндекс.Картами. Здесь работу с геолокацией и местоположением разбираем очень подробно. App Runner App Runner был написан спонтанно из-за большого количества проектов и постоянной переноски шаблонного кода для старта нового проекта. Изначально мы решали эту проблему, но со временем шаблон начал развиваться и перерос в нечто большее. App Runner реализует правильный запуск Flutter-приложения, убирая задержку первой прорисовки виджета и показывая заставку, во время которой происходит инициализация всего приложения. Также в нем реализован перехват необработанных ошибок (от Dart и Flutter), конфигурирование WidgetsBinding и Zone, переопределение экрана ошибки, возможность перезагружать дерево виджетов. Про App Runner с подробной демонстрацией мы записали видео. Mad Pay Для приложения сети кинотеатров Мираж мы реализовывали покупку билетов через Apple Pay и Google Pay. Взяли единственную на тот момент библиотеку, но оказалось, что в ней есть некоторые недочеты. Сначала мы решили их поправить, и Ильнар отправил pull request (слияние моих изменений с изменениями автора). Время шло, автор не отвечал, мы начали создавать библиотеку с нуля.  Mad Pay — это библиотека для мобильной оплаты через Apple Pay и Google Pay. Она вызывает нативное окно оплаты, в котором видно информацию о заказе и можно выбрать карту. После выбора карты и нажатия «оплатить» формируется токен, который нужно передать в банк интернет-эквайринга, в котором происходит оплата. Немного обидный момент: в 2021 году, Google сделал похожую библиотеку. Как вы понимаете, конкурировать с Google по популярности и поддержке сложно. Но наше решение по-прежнему работает и поддерживается, поэтому можете им пользоваться. Для тех, кто хочет посмотреть подробные разборы о Mad Pay: Как сделать оплату Apple Pay и Google Pay Покупки в приложениях Разбор платежных систем для Android-устройств Такой обзор получился от Flutter-команды Mad Brains. Рады, если наша работа облегчит жизнь другим разработчикам. Пишите в комментариях, помогли ли вам эти библиотеки, задавайте вопросы или расскажите, каких плагинов для Flutter вам не хватает.  IT-компания