Работая над разнообразными бизнес-задачами с помощью Flutter, мы часто сталкиваемся с отсутствием готовых решений. Поэтому команда Mad Brains создает собственные и делится ими с ИТ-сообществом. В этом материале мы рассказываем, как наши библиотеки помогают Flutter-разработчикам и бизнесу.

Статья вышла в свет благодаря ведущему разработчику Flutter-направления Mad Brains Ильнару. Он и его коллеги создали и поддерживают библиотеки, о которых пойдет речь.

AppMetrica‑Push‑Flutter

Клиенту нужен был российский сервис пуш-уведомлений с поддержкой Android, iOS, Huawei. Из всего списка, что мы им представили, больше всего подошел Яндекс AppMetrica: в нем была как аналитика, так и нужные для заказчика пуши.

На этапе анализа разных сервисов мы знали, что у AppMetrica есть SDK под Flutter на pub.dev. Она состоит из двух частей:

  1. AppMetrica SDK — ядро, включающее в себя аналитику и связь с сервером AppMetrica;

  2. 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 вам не хватает.

Комментарии (4)


  1. PackRuble
    00.00.0000 00:00

    Спасибо, даже не знал о существовании данных пакетов. За MIT отдельное уважение :) App Runner прям маст-хэв, уже устал копировать код из проекта в проект ????


  1. NowebNolife
    00.00.0000 00:00
    +1

    App Runner был написан спонтанно из-за большого количества проектов и постоянной переноски шаблонного кода для старта нового проекта. Изначально мы решали эту проблему, но со временем шаблон начал развиваться и перерос в нечто большее.

    AppRunner - просто кайф. Давно создал несколько пресетов под разные типы проектов.
    Также могу отметить Geocoder, т.к. это единственный пакет с внятной реализацией.


    1. PackRuble
      00.00.0000 00:00

      Если учитывать реализацию для Yandex, то да. А так, для OpenWeather есть реализация геокодирования (прямого и обратного) в пакете weather_pack (под моим руководством ????)


  1. sfirestar
    00.00.0000 00:00
    +1

    Очень круто, что в России есть те, кто пишет библиотеки под наши сервисы на Flutter (и выкладывает их в открытый доступ). Респект за проделанную работу!