Шесть открытых библиотек от Mad Brains, которые упростят жизнь Flutter-разработчика

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

Шесть открытых библиотек от Mad Brains, которые упростят жизнь Flutter-разработчика

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

Оглавление

Клиенту нужен был российский сервис пуш-уведомлений с поддержкой 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-канале:

Недавно AppMetrica Push SDK для Flutter от Яндекса обновился, но там все еще нет ряда возможностей, которые есть в нашей библиотеке, и пока нет поддержки Huawei.

В одном из проектов нам требовалось реализовать оплату товаров с помощью банковской карты, Google Pay, Apple Pay и обязательно через российский банк. Готовых решений для Flutter не было. Поэтому мы разработали первую открытую библиотеку Тинькофф для Flutter-разработчиков.

Функционал библиотеки:

  • проведение платежей, в том числе рекуррентных;
  • сохранение банковских карт клиента;
  • получение информации о клиенте и сохраненных картах;
  • управление сохраненными картами;
  • интеграция с онлайн-кассами;
  • оплата через Систему быстрых платежей (СБП), QR-ссылки.

Об этом SDK мы подробно писали на Хабр. Правда, с момента выхода статьи значительная часть кодовой базы обновилась.

А как создать Package, рассказываем в этом видео.

Функционал похож на библиотеку Tinkoff Acquiring. И история тоже: других библиотек для СберБанка на Flutter не было, поэтому написали свою. Был один нюанс — оплата у Сбера происходит только через их сайт, мы открываем окно оплаты в WebView.

Возможности созданного решения:

  • проведение платежей, в том числе рекуррентных;
  • проведение платежей через Apple Pay или Google Pay;
  • связанные платежи;
  • интеграция с онлайн-кассами.

Подробно про работу Системы быстрых платежей рассказываем тут.

В разработке приложения для сети химчисток BIANCA нам понадобилось определять координаты по адресу, который вводит пользователь, отображать их на карте и передавать на сервер. Так как у нас уже были планы использовать карты от Яндекса, то и сервис геокодирования решили взять от него. К сожалению, готового плагина на pub.dev не было, но зато было открытое API от Яндекса. Поэтому мы создали плагин и выложили его на pub.dev, так как понимали, что это еще понадобится в будущем.

Геокодер позволяет по названию адреса или объекта получить точные координаты, это прямое геокодирование. Также реализовано и обратное геокодирование путем ввода координат. Кроме того, в нем присутствуют подсказки при вводе адреса или объекта, что удобно для пользователей. Есть выбор топонима (когда вводят географическое название, например, города), а также возможность ограничить поиск указанной областью.

Важное преимущество: геокодер от Яндекса умеет работать с русским языком и полностью совместим с Яндекс.Картами.

Здесь работу с геолокацией и местоположением разбираем очень подробно.

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

App Runner реализует правильный запуск Flutter-приложения, убирая задержку первой прорисовки виджета и показывая заставку, во время которой происходит инициализация всего приложения. Также в нем реализован перехват необработанных ошибок (от Dart и Flutter), конфигурирование WidgetsBinding и Zone, переопределение экрана ошибки, возможность перезагружать дерево виджетов.

Про App Runner с подробной демонстрацией мы записали видео.

Для приложения сети кинотеатров Мираж мы реализовывали покупку билетов через Apple Pay и Google Pay. Взяли единственную на тот момент библиотеку, но оказалось, что в ней есть некоторые недочеты. Сначала мы решили их поправить, и Ильнар отправил pull request (слияние его изменений с изменениями автора). Время шло, автор не отвечал, мы начали создавать библиотеку с нуля.

Mad Pay — это библиотека для мобильной оплаты через Apple Pay и Google Pay. Она вызывает нативное окно оплаты, в котором видно информацию о заказе и можно выбрать карту. После выбора карты и нажатия «оплатить» формируется токен, который нужно передать в банк интернет-эквайринга, в котором происходит оплата.

Немного обидный момент: в 2021 году, Google сделал похожую библиотеку. Как вы понимаете, конкурировать с Google по популярности и поддержке сложно. Но наше решение по-прежнему работает и поддерживается, поэтому можете им пользоваться.

Для тех, кто хочет посмотреть подробные разборы о Mad Pay:

Такой обзор получился от Flutter-команды Mad Brains. Если у вас есть похожие или другие бизнес-задачи, мы бесплатно проконсультируем вас о возможных технологических решениях. Пишите нам — hello@madbrains.ru. В тексте письма укажите, что видели эту статью.

2424
12 комментариев

Использую ваш геокодер уже больше года. Классная и надёжная штука!

2
Ответить

классная подборка !

2
Ответить

В принципе без комментариев )

Ответить

Если посмотреть чуть шире, то окажется, что флаттер - номер один по популярности кросс-платформенный фреймворк для мобильной разработки в мире, обогнал react native уже и движется дальше. То, что в РФ такая ситуация с вакансиями - нуу, в мире она другая, вопрос куда смотреть. По 1С зато много позиций наверное :)

2
Ответить

App Runner - топ! У меня теперь все проекты с него начинаются. Красавчики, опенсорс - это сила.

1
Ответить