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

Работая над разнообразными бизнес-задачами с помощью 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. Если у вас есть похожие или другие бизнес-задачи, мы бесплатно проконсультируем вас о возможных технологических решениях. Пишите нам — [email protected]. В тексте письма укажите, что видели эту статью.

0
12 комментариев
Написать комментарий...
Yaroslav Savelyev

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

Ответить
Развернуть ветку
Вадим Егорычев

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

Ответить
Развернуть ветку
Alexey Smirnoff

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

Ответить
Развернуть ветку
Valerian Valkin

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

Ответить
Развернуть ветку
Alexander Volkov

У флаттера есть слабое место и оно никуда не уйдет, флатер это дарт. С тем же RN я могу и в реакт и в node js(в теории), а здесь чисто одно узкое направление. RN выкатил новую архитектуру, сейчас переписываются под нее существующие либы. Если после этих апгрейдов у этих технологий перформанс сравняется, ситуация на рынке опять начнет меняться

Ответить
Развернуть ветку
Valerian Valkin

С одной стороны конечно звучит классно - использовать JS/TS везде. Но по факту, такие "слабые" места есть у кучи других языков и фреймворков. Условно - PHP - только бэк, SWIFT - только iOS, итп. И ничего, как-то существуют огромные сообщества разработчиков.

Быть супер универсальным мб классно в стартапе, когда пилишь продукт в одиночку и приходится делать все подряд.

Но в профессиональной карьере важна специализация, и если разработчик сфокусировался на мобильной разработке, ему хватит работы, задач и профессионального роста чтобы не писать при этом веб фронт и бэк. Тем более если желание появится - тот же Flutter тоже развивается не только как мобильный фреймворк, и веб на нем можно делать

Ответить
Развернуть ветку
Alexander Volkov

"и веб на нем можно делать" - каким образом ? Компилировать дарт в js ?)

Ответить
Развернуть ветку
Анатолий Пешков

ну как бы - да. https://dart.dev/web

Ответить
Развернуть ветку
Анатолий Пешков

Сейчас бы в 2023 свою карьеру строить в зависимости от языка, вместо того чтобы относиться к языку как к инструменту, подходящему для определенных задач. Нет, давайте все на костыльном JS писать. Л - логика

Ответить
Развернуть ветку
Alexander Volkov

Ты наверное из тех кто за месяц становится экспертом в любом ЯП.
Ты сейчас сидишь на сайте и каждый день посещаешь уйму других, все из которых "на костыльном js"

Ответить
Развернуть ветку
Анатолий Пешков

Понятие эксперта сильно широкое, лучше поясни что ты имеешь в виду.

Если ты программист, то как много задач за последний год требовало знаний выше "вот эту либу подключаем сюда, вот этот параметр сюда, JSON парсим вот так"? И при этом как много "экспертных" знаний языка не сводится к пониманию основных принципов работы систем и специфичных приколов конкретного ЯП, о которых знают только так называемые эксперты?

Я и не отрицал повсеместного распространения JS, это часть проблемы. Если все вокруг (как кажется) слушают русский рэп - это не делает его лучше в моих глазах

Ответить
Развернуть ветку
Nicolay Omyotov

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

Ответить
Развернуть ветку
9 комментариев
Раскрывать всегда