Flutter. Много
2.76K subscribers
334 photos
23 videos
258 links
Заказать мобильную разработку: https://amiga.agency/?utm_source=tg
Заказать рекламу в канале @amiga_agency_bot

Новости Flutter-разработки, дайджесты мероприятий, личный опыт.
Download Telegram
Channel created
Hola,Amigos!

Flutter-разработка — наш козырь. Умеем, любим, практикуем. Поэтому маленькая вводная.

Почему мы выбрали Flutter?
Flutter — бесплатный и открытый framework для разработки мобильных приложений.

Особенность Flutter в том, что он помогает создавать приложения с одним массивом кода сразу для 2 платформ — IOS и Android.

В разработке с Flutter пишут на языке Dart — язык программирования, разработанный в компании Google, имеет строгую типизацию и предназначен для разработки веб и мобильных приложений.

Мы юзаем Flutter, чтобы создавать кросплатформенные приложения. Его экосистема разрослась большим количеством плагинов, которые значительно ускоряют разработку и облегчают жизнь программистам.

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

Комьюнити разрастается каждый день, а это значит что все больше и больше решённых задач и успешно созданных приложений будет расти, уменьшая порог вхождения для начинающих разработчиков.
🔥8👍2
Flutter — бесплатный и открытый набор средств разработки мобильного пользовательского интерфейса. C помощью Flutter возможно создать собственное мобильное приложение с одним массивом кода — для создания двух приложений (IOS и Android) можно использовать единый язык программирования и одну базу кода.

Flutter нацелен на две важные вещи:

1. SDK (Software Development Kit): набор инструментов, который поможет вам в разработке приложений. Он включает инструменты для компиляции кода в нативном машинном коде (код для IOS и Android).

2. Framework (Библиотека пользовательского интерфейса на основе виджетов): Коллекция функциональных элементов пользовательского интерфейса (кнопок, текстовых вводов, ползунков и т.д.), которые можно персонализировать под личные предпочтения.

Для разработки с Flutter используется язык программирования под названием Dart. Это также язык Google, но значительно улучшившийся в последние годы.
👍82
Hola, Amigos!

Присоединяйтесь к конференции для руководителей агентств и студий AGIMA Partners’ Weekend 18–19 августа!

В этом году тема встречи — «Выжить и преуспеть». Потому что именно в сложные времена происходит самое большое количество изменений на рынке. Коллеги подготовили контент, который поможет вашей компании вырасти и занять новые ниши.

19 августа выступит генеральный директор Amiga Дмитрий Тарасов с темой «Как за 9 месяцев создать прибыльную компанию». Он расскажет:

— как настроить продажи;
— как не погрязнуть в бюрократии и настроить процессы так, чтобы они работали на тебя;
— как мотивировать команду в условиях стартапа;
— как правильно выстраивать стратегию и вовремя ее менять.

Спикерами конференции стали люди из AGIMA, Grape, ITECH, RedMadRobot, X5 Retail Group, Студия Олега Чулакова, Articul, Технологии Доверия (ex. PWC).

Здесь подробная программа и регистрация: https://clck.ru/sUGyD

Приходите, будем вас ждать!
🔥11
Proleum: особенности техподдержки маркетплейса нефтяных продуктов

Hola, Amigos!
В нашем новом кейсе на vc рассказали, как устроен PROLEUM и почему поддерживать такой проект — это настоящий челлендж для нас и для клиента.

В материале рассказали про технологический стек и особенности поддержки проекта, а еще добавили видео про основной аналитический инструмент — Маркет Монитор.

За полгода работы нам удалось улучшить техническую документацию PROLEUM, настроить CI/CD и даже разработать чат-бот.

Теперь мы знаем практически все о тонкостях организации российского рынка нефтепродуктов.

Все подробности в нашем кейсе: https://vc.ru/services/510149-proleum-osobennosti-tehpodderzhki-marketpleysa-neftyanyh-produktov
👍9
Подключение КриптоПро в проекте на Flutter 📱


Привет, сегодня хотим поделиться,, какие инструменты криптографической защиты мы использовали при разработке мобильного приложения для ЭДО.🌐

КриптоПро — лидер российского рынка по распространению средств криптографической защиты информации и электронных подписей. С его помощью можно формировать и проверять электронные подписи, подписывать данные используя УКЭП, иметь возможность работы с УКЭП со съемных носителей таких как Рутокен и Джакарта. В КриптоПро поддерживается большое количество ОС и даже мобильные.

Мы в Amiga создали крутое приложение для электронного документооборота, где все операции над товаром можно производить онлайн и при этом точно знать, кто произвел операцию. Приложение сделано на фреймворке Flutter. Официального плагина от КриптоПро нет, но это не мешает нам внедрять СДК КриптоПро в наши нативные проекты и обращаться к ним с Flutter. 🧑‍💻

Чтобы интегрировать СДК в натив, достаточно скачать демо-приложение с официального сайта. Все что нам нужно это .aar, .jar библиотеки из папки libs. А также для работы с Рутокен или Джакарта будет необходимо добавить с++ библиотеки в папку jniLibs, их можно найти в СДК разработчика на сайтах производителей.

После таких манипуляций мы получаем возможность в нашем приложении считывать и хранить сертификаты, подписывать данные, проверять данные и срок лицензии и еще много-много всего.

#flutter #КриптоПро
🔥103👍2
Hola, Amigos!

Мы у себя раскатали крутую систему мотивации для разработчиков. Просто, понятно, а главное — схема рабочая, и, конечно, хотим этим поделиться. Поэтому 7 октября в Технопарке на конфереции Битва за IT выступит teamlead Amiga Руслан Ревель.

Он расскажет:
- как мотивитровать команду разработчиков с помощью метода one-to-one;
- поделится секретами работы с внешней командой;
- на примерах из практики подскажет, как привлечь разработчиков в off-top общение;
- про трекинг и нагрузку тоже не забыли.

Доклад Руслана в 16:30, готовьте вопросы, будем вас ждать! Ссылка на участие в конференции: https://it-forums.ru/.
🔥92
Создали мобильное приложение на Flutter, которое умеет распозновать товары из видеопотока

Вместе с AGIMA AI мы разработали мобильное приложение, в котором вы можете купить любой товар из фильма или сериала.

Все очень просто:

— Заходите в приложение и открываете камеру.
— Наводите смартфон на экран телевизора, монитора или другого устройства.
— Получаете название фильма, имена героев, а главное список товаров и ссылку, где купить.

Мы интегрировали ML-модель, которая за доли секунд распознает видео и предлагает товары в нем присутствующие. В кейсе рассказали и про техническую часть проекта.

Пишите вопросы в комментарии, мы готовы на них ответить.
🔥11👍3
Flutter vs native Android 📱

Привет, меня зовут Антон Мартышков, я Flutter-разработчик в Amiga, сейчас хочу рассказать, чем же меня как нативного разработчика заинтересовал Flutter.

Декларативный ui

В нативном Android весь пользовательский интерфейс создается в отдельных файлах – xml. Оперируя тегами, мы строим иерархию view, наполняем контентом или же будем делать это в процессе выполнения программы. Затем разметку нужно подключить в Activity, fragment и др., если мы планируем менять данные в ходе выполнения программы или обрабатывать нажатие на кнопку пользователем. Конечно, можно сказать, что в Android тоже появился декларативный стиль – Jetpack Compose. Но, когда я лично его опробовал, то понял, что делать это на Flutter намного удобнее.

Hot reload

Hot reload – это когда вносишь изменения в коде, и можно тут же увидеть результат изменений на экране. Очень крутая и полезная вещь для разработчика. Достигается это благодаря JIT (Just in time) компиляции. В то время как в Android все время приходится перезапускать приложение и снова «доходить» до тестируемого места.

Гибкость в реализации элементов

Боль Android-разработчика – это когда заказчик хочет, чтобы Android выглядел также как IOS. Во Flutter можно использовать элементы пользовательского интерфейса как Material, так и Cupertino на любой платформе. А если чего-то не хватает, то всегда можно сделать руками.

Адаптивный ui

У разных устройств размеры экрана и плотность пикселей отличается. Android их разделяет на 6 dimensions, базовым считается mdpi, это когда 1px = 1dp. Зачастую разработчику приходится тратить много сил на адаптивы, поскольку из mdpi нужно будет создать dimensions еще для: ldpi, hdpi, xhdpi, xxhdpi, xxxhdpi.

Во Flutter применяются логические пиксели, которые делают эту работу за вас.

Множество поддерживаемых ОС

Создавая Flutter-приложение мы можем запустить его на Android, iOS, windows, linux, macOs, web. Это дает возможность для реализации pet-проектов, а еще упрощает рутину по типу тайм-трекинга задач в доске (мы используем Jira).

Поддержка
В Android api много легаси и костылей. Мне сразу вспоминается, как до появления Camera2 приходилось работать с камерой. И почему-то до сих пор не придумали Pub.dev.

Над Flutter же, как мне кажется, Google старается больше, он не мог случайно получиться таким удобным и продуманным😉.

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

#flutter #native
🔥10👍2
Мнение разработчиков: лайфхаки для дизайнеров, ч1.🖥

Hola, Amigos! На связи Flutter-разработчики Amiga: Саша Чаплыгин и Антон Мартышков.

Мы поделимся «болями» из личного опыта при работе с дизайнерами. Обозначим общие ошибки и дадим рекомендации, как при дизайне для Flutter не переделывать бизнес-логику и дизайн-системы по несколько раз. Поехали!

Особенность Flutter в том, что дизайн под этот фреймворк создается адаптивным, его можно сделать уникальным, не опираться на дизайн других платформ. В работе заметили, что некоторые дизайнеры дублируют элементы одного и того же функционала iOS и Android. Это не есть хорошо для пользователя, он начинает путаться при использовании приложения. К тому же это вынуждает делать лишние проверки.

Кейс из практики: мы делаем проект, на главной странице размещаются нижний bottom navigation bar с активными окнами: главная, запись, приемы, чат. Дизайнер решил в этот момент добавить кнопку выхода на главную страницу как в iOS на всех вкладках. Это дублирует функционал bottom navigation bar.

Совет: не смешивайте User experience элементы iOS и Android, которые отвечают за один и тот же функционал, сразу. Вместо этого проанализируйте, не дублирует ли дизайн возможности Flutter.

Привычная работа с iOS и Android может выйти боком. Flutter подходит под все операционные системы, а их больше 10. Часто дизайнеры автоматически подстраивают макеты под 1 платформу, еще реже под 2. Но тут нужно поменять сам подход.

Кейс из практики: дизайнер создал кнопки навигации, которые красиво и гармонично смотрелись на iOS. Но при тестировании на Huawei эти же кнопки занимали пол экрана.

Совет: абстрагируйтесь от привычных операционок iOS и Android. Подумайте, как приложение будет выглядеть на Windows, Web и других.

Когда создается кроссплатформенное приложение, то видно заимствованные элементы. Когда ты пользуешься Android и видишь в приложении виджет iOS, то сразу становится понятно – это Flutter.

Совет: делайте один уникальный дизайн приложения, в котором не будет стандартных решений. Лучше добавьте кастомности. Flutter это позволяет. Да, конечно, никто не запрещает использовать уже понятные пути, но это скучно. Зачем делать то, что скучно?

В следующем посте поделимся еще 3 лайфхаками, не переключайтесь!
🔥8👍5🤔1
Hola, Amigos!

Мы разработали мобильное приложение на Flutter с интеграцией программы лояльности PRO.Expert

В нем сервисные специалисты компании Vaillant могут регистрировать работы и получать за это баллы. Их можно копить, выводить на карту или получать подарки из каталога.

Что мы сделали:

— разработали приложение с нуля;
— сократили время заполнения данных с 5 минут до 30 секунд;
— создали упрощенный функционал регистрации работы;
— внедрили офлайн-регистрацию;
— унифицировали сбор данных и соединили их в единую систему.

Задавайте вопросы, мы обязательно ответим на них.
🔥142👍1
Мнение разработчиков: лайфхаки для дизайнеров, ч2.⌨️

Hola, Amigos! На связи Flutter-разработчики Amiga: Саша Чаплыгин и Антон Мартышков.

Мы продолжаем делиться болями в работе с дизайнерами, которые создают макеты для Flutter. В первом посте мы рассказали об общем подходе в работе, сегодня пойдем по деталям.

Для Android и iOS иконки нужны в разных форматах и размерах. При нативной разработке привычнее подстраиваться под платформу, но c Flutter все не так. Плагин flutter_launcher_icons автоматически подгоняет иконку под нужный размер, но для этого нужен векторный формат.

Cовет: сразу делайте иконки в векторе.

С большим текстом разработчикам не всегда очевидно, как его отображать. На макете он смотрится органично, но при разработке вскрываются проблемы.

Совет: если текстовое поле подразумевает длинный текст, то указывайте как обрезать его, перенести на следующую строку или снижать размер шрифта. Это сократит время разработки.

У Flutter собственный рендеринг, поэтому поведение визуальных компонентов отличается от принятого на каждой из платформ. Это ускоряет разработку при условии, что прописан четкий UI Kit, и дизайнер следует ему.

Совет: делайте UI Kit, используйте его в работе.

Разработчики и дизайнеры, какие мысли? Есть, что добавить? Пишите, с радостью подискутируем!✏️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍2
Кейс: что делать с большим APK-файлом?⚙️

Hola, Amigos! На связи Антон Мартышков, Flutter-разработчик Amiga. Сегодня на реальном примере проекта расскажу, как сократить вес APK-файла за 10 минут работы.

Одна из важных метрик Android-приложения наряду со скоростью запуска — вес установочного файла. Большой APK-файл долго скачивается на устройствах с небольшой объемом внутренней памяти, из-за этого могут быть проблемы с установкой. Это повлияет на конверсию и удовлетворенность пользователя

Пример из практики: когда я начал работать над проектом, установочный файл весил примерно 126 Мб. Проведя исследование, я заметил, что мы используем общую ML-библиотеку от Google «google_ml_kit», хотя большая часть функционала не была нужна. Увидев, что Google раздробил большую библиотеку на маленькие, я принялся их заменять. Убедился, что библиотека работает также, а функционал приложения не изменился, провел замеры. По итогу установочный файл уменьшился примерно на 46 Мб.

Очень здорово, подумал я, но все равно многовато. Продолжил поиски и наткнулся на большой gif-файл, 18,8Мб, длиной в 6 секунд. И тут же сжал его без потерь до 6Мб.
Показал небольшую оптимизацию тимлиду, получил одобрение на MR в релизную ветку.

Так 30 минут поиска проблем и 10 минут небольших изменений дали пользователям приятный вес установочного файла в 68 Мб.

Что делать с большим APK-файлом?
— Проведите исследование, действительно ли вы используете подходящую библиотеку.
— Тестируйте, не изменился ли функционал приложения после изменений.
— Все, что можно оптимизировать – оптимизируйте.
— Не забудьте про согласование с тимлидом, это важно.
🔥12👍31
Мнение разработчиков: послание для бэка, ч1.🔙

Hola, Amigos! С вами Саша Чаплыгин, Flutter-dev Amiga. Сегодня поделюсь примерами из практики в работе с back-end.

Зачастую, когда реализуешь какое-либо приложение, бэк может быть не готовым, или же он делается параллельно. В связи с этим возникают определенные проблемы с данными. В этом случае можно посоветовать только набраться терпения и верстать макеты с моковыми данными. Потом, когда бэк будет готов, нужно будет переделать модели данных,на которых построено МП, реализовать запросы этих данных и обрабатывать их так как это задумано в ТЗ.

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

Когда же возникает проблема с уже готовым бэком, может быть 2 решения. Первый, самый логичный, попросить бэк починить тот или иной метод, дабы он отдавал нужные данные. Но бывает так, что пока бэк разберется с этой проблемой, пройдет месяц, а-то и больше (такое бывает в крупных проектах). Отсюда возникает второе решение – попытаться обработать или преобразовать имеющиеся данные в нужные. Это ускорит релиз и заказчик будет доволен.

Кейс из практики: бэк заказчика отдавал разные форматы даты и времени – timestamp и ISO 8601. В итоге сделали обработку и того и другого формата сразу.

Послание бэкендщикам от мобильщиков:
1. Делайте поля объекта такими, какими они должны быть. К примеру, из того что я встречал:
• Присылали булево значение строкой. “false” вместо false;
• Если значение поля всегда число – делайте это поле числом, а не строкой.

2. Тестируйте API самостоятельно или же подключите автотестирование. Мобильщики не должны проверять его.

Кейс из практики: подключение нескольких новых методов в МП привело к тому, что почти все методы не работали должным образом. В итоге потрачено время на проверку API, но никак не на подключение новых методов.

3. Всегда нужно чтобы API придерживалось схеме «ключ» – «значение».

Пример:
Плохая реализация поля fullName
{
“id”: “124314dfsdffd”,
“fullName” : [“John”, “Jameson”]
}

Правильная реализация
{
“id”: “124314dfsdffd”,
“fullName” : {“name”: “John”, “surname” : “Jameson”}
👍8🔥6🏆1
Hola, Amigos!

Как начать разрабатывать на Flutter и найти работу? Как быстро повышать скиллы и расти разработке? Саша Чаплыгин, Flutter-dev Amiga, рассказал о том, как стать разработчиком на Flutter.

В этой статье Саша поделился:
— своим опытом поиска работы;
— материалами для изучения Flutter;
— личным опытом взлетов и факапов;
— чек-листом по устранению ошибок новичков.

Почитать статью можно тут. Если есть вопросы — пишите, Саша обязательно на все ответит.
🔥8👏3🏆3
Мнение разработчиков: послание для бэка, ч.2.🔙

Hola, Amigos! На связи Антон Мартышков, Flutter-dev Amiga. Здесь Саша рассказал свой опыт в совместной работе с Backend-разработчиками. Сегодня я продолжу эту тему и дам несколько рекомендаций для бэка.

1. Документируйте свое API. Невозможно качественно подключить клиентскую часть, когда не знаешь, что нужно передать серверу, и что он вернет. Эту документацию нужно поддерживать в актуальном состоянии чаще, чем любую другую. Ведь от актуальности API зависит качество разработки продукта.

2. Изучайте дизайн и ТЗ. Не нужно слать лишние данные, а при изучении дизайна, поймете какие данные нам нужны для отображения пользователю.

3. Не переносите функционал, который должен делать back на front-часть.

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

4. Следите за чистотой код и рефакторите его. Не нужно в разных запросах отправлять похожие сущности (img, image, img_url и тд).

5. Всегда делайте хорошую обработку ошибок, объясняйте причины ошибок или хотя бы код ошибки. Так мы сможем объяснить пользователю, что пошло не по плану.

Задавайте вопросы, если они есть, с радостью отвечу и подискутируем!
🔥11👍1🤔1👌1
Обычно тут мы пишем про разработку на Flutter, но сегодня хочется поделиться, как мы в Amiga управляем удаленной командой разработки.

Наш тимлид Руслан Ревель собрал все самое важное по этому поводу.
🔥9👍4👏2🏆2