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

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

Hola, Amigos! С вами Саша Чаплыгин, Flutter-dev Amiga. Работаю над улучшением NDA-проекта — приложение, в котором используется камера для сканирования определенных элементов на товаре. Делюсь с вами обзором, как начать использовать камеру в приложении Flutter.

Нам понадобится пакет camera. Добавьте его в файл pubspec.yaml вашего проекта:

yaml
dependencies:
camera: ^0.9.4+5


После этого запустите flutter pub get для установки зависимостей.

Создадим свою собственную страницу.
Используем виджет CameraPreview для отображения камеры на экране. Для этого в initState инициализируем наш CameraController c использованием CameraDescription (полученным из availableCameras).

*код нашего виджета*
late CameraController _controller;

@override
void initState() {
super.initState();
_controller = CameraController(
widget.camera, // CameraDescription
ResolutionPreset.high,
);

_controller.initialize().then((_) {
if (!mounted) {
return;
}
setState(() {});
});
}

@override
void dispose() {
_controller.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
if (!_controller.value.isInitialized) {
return Container();
}
return AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: CameraPreview(_controller), // кастомизируем тут
);
}
}


Теперь у нас есть экран камеры, добавим функционал для запуска и остановки камеры. Например, вы можете добавить кнопку «Сделать фото» и кнопку «Записать видео», добавив их в ваш кастомный виджет с экраном камеры.

FloatingActionButton(
onPressed: () async {
try {
if (!_controller.value.isInitialized) {
return;
}
final image = await _controller.takePicture();
// Обработка сохраненной фотографии
} catch (e) {
// Обработка ошибок
}
},
child: Icon(Icons.camera),
),
FloatingActionButton(
onPressed: () async {
try {
if (!_controller.value.isInitialized) {
return;
}
if (!_controller.value.isRecordingVideo) {
await _controller.startVideoRecording();
} else {
final video = await _controller.stopVideoRecording();
// Обработка сохраненного видео
}
} catch (e) {
// Обработка ошибок
}
},
child: Icon(
_controller.value.isRecordingVideo
? Icons.stop
: Icons.videocam,
),
),


Не забудьте добавить разрешение на доступ к камере в файлах Info.plist на iOS и в AndroidManifest.xml на Android. И обрабатывайте исключения, дабы не попасть впросак🙂 Удачи!

Пишите в комментариях было ли полезно и рассказывайте о своих проектах Flutter с камерой!
👍19🔥111
Hola, Amigos! В этом году мы участвуем в конкурсе «Рейтинга Рунета» с 3-мя крутейшими проектами. Мы врываемся в него впервые, поэтому можете представить, насколько для нас это важно💜

В ежегодном всероссийском конкурсе участвуют 3 наших сайта:

Gigoo. Маркетплейс, который помогает руководителям бизнесов получить быстрый доступ к качественной экспертизе.

Шахтинская плитка. Сайт-каталог, который поддерживает имидж ведущего отечественного производителя на рынке.

Академия Талантов. Государственный образовательный портал, который хранит в себе всю информацию об образовательных программах и является оператором взаимодействия студентов и преподавателей.

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

Сейчас самое время поставить «отлично» нашим проектам! Регистрация не требуется, поэтому понадобится всего 3 минуты на доброе дело. Вам не сложно, нам приятно🥰

Всем посылаем лучики благодарности!
🔥12💩3👍21
Hola, Amigos! Делимся Flutter-пакетами, которые улучшат ваши приложения:

📌carousel_slider: Если вам нужно добавить красивый карусельный слайдер с изображениями или контентом, этот пакет для вас. Он предоставляет легкий и гибкий способ создания интерактивных каруселей.

📌flutter_slidable: Перетаскиваемое меню — это то, что делает ваше приложение удобным для пользователей. Этот пакет поможет вам легко добавить скользящие действия к элементам списка, таким как удаление, архивирование и многое другое.

📌auto_size_text: Управление текстовым контентом может быть сложной задачей, особенно когда вы не знаете, сколько места он займет. Этот пакет автоматически подстраивает размер текста под доступное пространство, облегчая вам жизнь при работе с разнообразными макетами.

Надеемся, эти пакеты сделают вашу разработку более продуктивной!

Делитесь популярными пакетами в комментариях или пишите, про какой нам рассказать подробнее?
🔥272👍1
Основы CI/CD

Hola, Amigos! Рассказываем про важный инструмент в создании приложений, который позволяет улучшить процесс разработки, ускорить доставку обновлений и снизить риски — непрерывная интеграция (CI) и доставка (CD).

Что это такое?

Непрерывная интеграция (CI) — это практика, при которой код разработчиков регулярно (обычно несколько раз в день) интегрируется в общую ветвь. Каждый раз, когда новый код добавляется, автоматически запускаются тесты, чтобы убедиться, что новый код не сломал существующую функциональность.

Непрерывная доставка (CD) — это практика, при которой каждое успешное завершение цикла CI автоматически запускает процесс доставки приложения в целевую среду (например, на сервере или в магазинах приложений).

Основные преимущества CI/CD:

💫 Автоматизация: CI/CD интегрирует автоматическую сборку, тестирование и развертывание, что позволяет разработчикам концентрироваться на коде, а не на рутинных операциях.

💫 Улучшенное качество: Регулярная интеграция и тестирование помогают выявлять и устранять ошибки на ранних этапах разработки.

💫 Ускорение доставки: Благодаря непрерывной поставке, новые функции и исправления могут достигать конечных пользователей намного быстрее.

💫 Надежность: CI/CD позволяет уделять больше внимания контролю качества и безопасности кода.

💫 Улучшенная совместная работа: Разработчики могут легко сотрудничать, так как изменения в коде интегрируются и тестируются непрерывно.

С основами разобрались! Оставьте реакцию под постом, если эта методология вам уже была знакома👍🏻

В следующих постах поговорим о этапах, инструментах и конфигурации CI/CD для мобильных приложений.
👍26🔥94
Этапы CI/CD

Hola, Amigos! Продолжаем глубже погружаться в мир CI/CD. Понимание этапов CI/CD
поможет вам настроить эффективный процесс автоматизации разработки и доставки вашего мобильного приложения.

1️⃣ Интеграция (Integration)

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

2️⃣ Сборка (Build)

Это процесс компиляции и создания исполняемых файлов вашего приложения из исходного кода. В CI/CD среде сборка автоматизирована, что обеспечивает консистентность и надежность сборки на всех этапах разработки.

3️⃣ Тестирование (Testing)

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

4️⃣ Доставка (Delivery)

После успешной сборки и тестирования приложение готово к доставке. На этом этапе оно может быть автоматически упаковано и развернуто на тестовых или боевых серверах. Доставка включает в себя также автоматическое создание документации и уведомлений.

5️⃣ Развертывание (Deployment)

Этап развертывания заключается в доставке приложения пользователям. Он может быть автоматизирован с использованием инструментов, таких как CI/CD пайплайны или контейнеризация. Это гарантирует, что ваше приложение всегда обновлено и доступно пользователям.

6️⃣ Мониторинг (Monitoring)

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

Настройка автоматического выполнения каждого этапа с учетом вашей инфраструктуры и требований приложения поможет вам ускорить и улучшить процесс разработки. Ставьте реакцию, если было полезно!
👍15🔥41
Встречаемся на UIC DEV 2023

Hola, Amigos! Мы участвуем в технологической конференции UIC DEV в Ижевске. Это та самая умная вечеринка про IT и для IT, на которой одновременно стартуют 12 тематических потоков: бэкенд, фронтенд, мобильная разработка, тестирование, дизайн, менеджмент и другие🪩

UIC — семейство старейших IT-мероприятий Удмуртии. 1000+ участников из 10+ регионов Поволжья и Урала. 70+ спикеров из ведущих компаний РФ и не только.

От Amiga выступит наш СЕО Дмитрий Тарасов с докладом «Почему Flutter лучшее предложение для бизнеса». Покажем мнооого наших кейсов и расскажем, почему так горячо любим Flutter. Сравним его с нативом и ответим на все ваши вопросы, развеем сомнения на счет кроссплатформенности.

UIC DEV пройдет уже 30 сентября, поэтому скорее покупайте билет по ссылке. По промокоду TARASOV дарим скидку 20% на билет🎟

До встречи в Ижевске!
13👏4👍3
Инструменты и конфигурации CI/CD

Hola, Amigos! Сегодня поговорим о важных инструментах и конфигурации CI/CD для мобильных приложений. Правильный выбор инструментов и их настройка могут существенно упростить вашу работу и улучшить процесс разработки.

Инструменты для CI/CD:

Jenkins: популярный open-source сервер автоматизации поддерживает множество плагинов, что делает его гибким инструментом для настройки CI/CD пайплайнов.

Travis CI: облачный сервис, который предоставляет простое управление пайплайнами CI/CD для проектов на GitHub и других платформах.

CircleCI: еще один облачный сервис, который предлагает масштабируемые и настраиваемые CI/CD пайплайны.

GitLab CI/CD: если ваш проект хранится на GitLab, вы можете использовать встроенные инструменты для настройки CI/CD.

Fastlane: инструмент для автоматизации сборки и развертывания мобильных приложений. Он может управлять всеми шагами, от сборки до отправки в магазины приложений.

Конфигурация CI/CD:

Выбор Целевых Сред (Environments): Определите, где будете разворачивать приложение: тестовые среды, стейджинг, боевая среда и т.д.

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

Доставка: Определите, как вы будете доставлять приложение в целевые среды.

Развертывание: Настройте автоматическое развертывание на выбранные среды. Используйте контейнеризацию, если это уместно.

Мониторинг и Оповещения: Не забудьте настроить мониторинг производительности и оповещения для своих CI/CD пайплайнов, чтобы оперативно реагировать на проблемы.

Хранение Конфигурации: Лучше всего хранить конфигурацию CI/CD в коде (например, .gitlab-ci.yml или .travis.yml), чтобы она была частью вашего репозитория и отслеживалась вместе с кодом.

Выбор инструментов и правильная конфигурация CI/CD играют важную роль в ускорении разработки и обеспечении надежности ваших мобильных приложений. Не стесняйтесь экспериментировать и настраивать пайплайны под свои нужды.

Если у вас есть вопросы или хотите узнать больше о каком-либо конкретном инструменте, дайте знать в комментариях!
🔥11👍52
Наша Flutter команда на DevFest🤪

Hola, Amigos! 6-8 октября в Омске пройдет конференция DevFest для программистов, дизайнеров и тестировщиков. В этом году будет бурное обсуждение сразу 10 треков: iOS, Android, Аврора, Automation, Flutter, .NET, Python, UX/UI, Golang, Web. Среди спикеров: VK, Литрес, Тинькофф, Самолет, Яндекс и другие.

Amiga будут представлять:
1. Тимур Моисеев, руководитель мобильной разработки с докладом «Flutter и ML».
2. Саша Чаплыгин, Flutter-разработчик с докладом «Flutter и камера».

Выступаем 6 октября в 12 и в 15 часов. Приходите! Будет только практическая информация для коллег по цеху, разложим всё по полочкам на примере кейсов. И с удовольствием ответим на ваши вопросы про кроссплатформенность💜

Место встречи: ОмГТУ, пр. Мира 11а, 6 корпус. Увидимся!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍51
Модификаторы классов для сопровождающих API

Hola Amigos! На связи Тимур Моисеев, руководитель мобильной разработки Amiga. Сегодня делюсь с вами переводом статьи, из которой вы узнаете, как использовать новые модификаторы и как они влияют на пользователей ваших библиотек.

Содержание:
– Модификатор mixin классов
– Другие модификаторы согласия
– Модификатор interface_
– Модификатор base_
– Модификатор final_
– Модификатор sealed_

Переходите по ссылке, чтобы прочитать статью. И ставьте реакцию💜на пост, если было полезно!
🔥116👍3
Keys во Flutter

Hola Amigos! На связи Тимур Моисеев, руководитель мобильной разработки Amiga. Еще раз решил кратко пройтись по теме ключей у виджетов. Хочется осветить пару моментов, которые будут полезны как начинающим разработчикам, так и тем, кто уже немного погрузился во Flutter.

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

Переходите читать на Habr! И накидайте реакций под постом, если формат коротких заметок — 👍
🔥17👍92
This media is not supported in your browser
VIEW IN TELEGRAM
Обзор пакета flutter_slidable

Hola, Amigos! Мы решили вернуть рубрику #пп — полезный пакет. Будем рассказывать про пакеты во Flutter, которые помогут вам разрабатывать удобные и классные приложения. Все подобные посты будем собирать под хэштегом #пп, чтобы в случае чего, вы смогли быстро найти нужный.

Сегодня про flutter_slidable. Этот пакет позволяет создавать скользящие списки с направленными действиями скольжения, которые можно отклонить в процессе выполнения.

Flutter Slidable добавляет два новых виджета:

1. HorizontalSlidableButton — для горизонтальных скользящих действий.
2. VerticalSlidableButton — для вертикальных скользящих действий.

Пакет обладает широким функционалом, включая:

📱Взаимодействие с анимацией через AnimationController.
📱isRestart — после взаимодействия можно вернуть виджет в исходное состояние.
📱completeSlideAt — позволяет задавать прогресс прокрутки, после которого остальной процесс будет доведен до начала или конца (при включенном autoSlide=true).
📱autoSlide — включить или выключить автоскролл, при котором после завершения прокрутки, прогресс автоматически доводится либо до начала, либо до конца.

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

Примеры использования можно изучить в официальном репозитории на GitHub.

Желаем вам удачи в разработке! И ставьте реакции на пост, если рады возвращению рубрики🎉
🔥23👍6💯6🏆32
Hola, Amigos! Русскоязычные каналы разработчиков на Flutter — большая редкость в телеграм. Поэтому срочно делимся с вами находкой!

Канал ведет Саша Ворожищев, руководитель Flutter/iOS-разработки AGIMA. Это не новостной канал, автор делится: статьями о мобильной разработке, исследованиями, классными подходами, трендами в IT. Плюс щепотка юмора и музыки👆

Загляните на канал Саши и подпишитесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
10👎7🔥4😁3💩2🤡1😍1
Гайдлайн Flutter.Много

Hola, Amigos! На связи команда Flutter разработчиков компании Amiga.

Сначала немного истории) Мы начали вести этот канал 21 июля 2022 года. Нами двигало желание создать комьюнити разработчиков на Flutter, делиться ценной информацией и проектами.

За год наш канал хорошо подрос, и мы стремительно догоняем топовые каналы о Flutter в России, чему очень рады! Но у этого факта есть и обратная сторона. Мы всё чаще начали сталкиваться в комментариях в нашем чате с несогласованной рекламой.

Чат закрывать мы не планируем, так как хотим сохранить связь с вами💜Поэтому решили установить правила, чтобы всем было хорошо и уютно во Flutter.Много.

Гайдлайн:
– не спамить,
– не ругаться матом,
– не обсуждать политику,
– не давать несогласованную рекламу.

Со своей стороны тоже обещаем больше экспертной, интересной и полезной информации! Будем с вами честны, реклама здесь периодически будет появляться, но супер-редко и незаметно🤫 Ведь мы хотим развивать и увеличивать наш канал.

По любым вопросам пишите нашему pr-менеджеру, Арине @arinazzzz💌

Всем мир и Flutter!
👍1411🔥5💩4🕊1
🔥6👍43