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

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

Hola, Amigos!

На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Сегодня обсудим deep links. Мы нашли интересные статьи у иностранного автора и делимся с вами переводами.

Что вы сможете сделать у себя в приложении после изучения гайда:

– Нажатие на ссылку похожую на https://your-domain.com/details будет открывать определенный экран в вашем приложении.
– Если вы используете кастомную схему, например myscheme123://details, то этот гайд не для вас. Тут лучше рассмотреть пакет app_links.

Переходите по ссылке и пишите комментарии, если было полезно, для нас это лучшая мотивация!
🔥92🎉2👍1
Hola, Amigos! На связи Flutter-команда агентства продуктовой разработки Amiga.

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

В новой статье:
-возможности библиотеки bloc_test,
-примеры простых модульных тестов,
-примеры тестирования сложных событий.

Читайте по ссылке на Habr. Ставьте реакции, если было полезно!

А также делитесь в чате, с какими трудностями встречаетесь вы при тестировании приложений?
6❤‍🔥3🔥2👍1🥰1🙏1
Hola, Amigos!

29 и 30 августа пройдет крупнейшая конференция для руководителей студий и агентств BOOST. Уникальное мероприятие для digital-рынка представляет собой площадку для нетворкинга и шеринга знаний от лидеров индустрии.

5 потоков [впервые! дизайн и digital-маркетинг]
150+ спикеров
1000+ участников

Amiga представят спикеры:

⚙️ Дмитрий Тарасов, СЕО с докладом «Изменения в digital-продакшене при переориентировании на длинные деньги»

⚙️ Артем Салеев, технический директор с темой «Как избежать убытков, когда не попал в оценку?»

⚙️ Константин Франгуриди, Исполнительный директор модерирует направление Дизайн и креатив.

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

Пользуйтесь промокодом AMIGA10 для покупки билетов со скидкой 10%.

До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8🥰3👍2🔥1
Hola, Amigos! Что делаете 5-8 сентября? Поехали с нами в Омск на DevFest! Это ежегодная конференция для программистов, которая проводится с целью развития IT‑сообщества.

Будет интересно всем разработчикам: Android, Python, iOS, Web, Аврора, Flutter, Java, .NET, SRE, Documentation.

Мы участвуем уже второй год подряд и в этот раз Amiga будут представлять:

⚙️ Паша Гершевич, Flutter Team Lead с докладом «Логирование на Flutter или какие метрики помогут в оптимизации».

Разберём, зачем нужны логи разработчикам и тестировщикам. Как сделать логи информативнее. Какие метрики логировать в приложении и как это делать лучше всего. Где сохранять логи, чтобы их можно было спокойно посмотреть.

Доклад будет полезен Flutter-разработчикам уровня Middle и выше, а также их тестировщикам.

⚙️ Артем Салеев, Технический директор с темой «Перестройка процессов разработки при масштабировании агентства».

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

Будет полезно техническим специалистам, которые хотят стать TeamLead, TeamLead Backend, CTO.

Конфа пройдет уже на следующей неделе, так что советуем поторопиться с билетами!
Промокод DEVFESTAMIGA даёт скидку 30% и действует до 6 сентября.

До встречи! 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥32🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍31
Hola, Amigos!

На связи Михаил Чернецов, Flutter Dev агентства продуктовой разработки Amiga. Сегодня мы поговорим про Draggable, который позволяет перетаскивать виджет по всему пространству экрана.

При передвижении объекта под курсором отображается виджет, передаваемый в свойство feedback. Если необходимо изменить сам виджет, можно передать свойство в childWhenDragging.


Draggable(
data: …, // Данные
feedback: Container(), // Виджет который перетаскивается
childWhenDragging: Container(), // Виджет который заменяет child, когда виджет перетаскивают, необязательный.
child: Container(), // Сам виджет
),


Однако само перетаскивание виджета ничего не делает. Необходимо также предоставить ему место, куда его можно передвинуть. Этим занимается виджет DragTarget.

Необходимо предоставить ему билдер и опциональные callback onWillAcceptWithDetails, отвечающий за приём Draggable widget и отработку onAcceptWithDetails.

onMove и onLeave — интересные callback, т.к. реагируют не на то, что Draggable был туда передан, а на появление в этой области Draggable.


DragTarget(
builder: (BuildContext context, List<dynamic> _, List<dynamic> _,) {
return Container();
},
onAcceptWithDetails: (DragTargetDetails details) {

},
),


Однажды это нами было использовано, т.к. при драге виджета мы не можем использовать другие жесты, в том числе скролл. На верхней и нижней границе экрана были расположены два невидимых драг таргета, которые начинали движение ScrollController при срабатывании onMove и останавливали движение контроллера при срабатывании onLeave.

Из интересных применений Draggable является также оборачивание виджета в DragTarget. Его нельзя будет перетаскивать, но он будет реагировать на перетаскивание Draggable. Например, когда нужно сделать что-то наподобие ReorderableList, когда можно взять необходимый элемент, а остальные элементы обернуть в DragTarget.

Также существует виджет LongPressDraggable, который перетаскивается только при срабатывание на длительное нажатие и при этом триггерит hapticFeedback (вибрацию).

Всем хорошего кода! Делитесь в чате своим опытом работы с Draggable.
👍113🔥2🙏2
Hola, Amigos!

На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Сегодня обсудим кастомизацию иконок по формам и цветам на Flutter. Особенно интересно рассмотреть кейсы с Android выше 12 версии и iOS 18, который пока еще в бете.

Конечно, можно использовать библиотеку flutter_launcher_icons, о которой мы уже рассказывали, но она пока не работает с новыми иконками для iOS. Изменение иконки у приложения — задача достаточно редкая. Давайте посмотрим, как это можно сделать вручную.

👾 Начнем с Android. Можно создать статичные иконки (прямоугольные и круглые), динамическую форму и монохромные, чтобы потом менять цвет.

Для этого понадобится цвет фона или сам фон (только для статичных и динамической формы) и объект на передний план. Всё это в векторе.

Если используем статичные картинки, то их можно подготовить и сделать нужных размеров вручную или при помощи специальных генераторов. Добавляем их в папки /android/app/src/main/res/mipmap-xxxx/ (xxxx заменить на нужный размер) под именами ic_launcher и ic_launcher_round. Далее вписываем код в AndroidManifest:

<application
...
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
...>
</application>


Если хотим динамические картинки, то можно воспользоваться встроенным инструментом в Android Studio. Для этого откройте папку Android вашего проекта как отдельный проект. После нажмите правой кнопкой мыши на res и выберите New -> Image Asset.

Далее выбираем картинку в Foreground и фон в Background. И Android Studio все сделает сама.

Теперь перейдем в res/drawables/anydpi-v26/ic_launcher.xml и добавим монохромную версию. Если она у вас будет отличаться от фона стандартной, то сначала добавьте свое изображение.

<monochrome android:drawable="@drawable/ic_launcher_foreground" />


🤖 На iOS все проще. С приходом iOS 18 придет еще 2 типа иконок: для темного режима (Dark) и окрашенные (Tinted).

Лучше всего попросить дизайнера сделать эти 2 типа иконок и изменить их размер, чтобы вставить в Xcode. Сейчас это делается через Xcode Beta. Для темной темы и окраски можно обойтись прозрачными изображениями в отличии от светлой темы.

Всем хорошего кода! Пишите в чате, как вы кастомизируете иконки на Flutter?
🔥10👍52🤩1
Hola, Amigos!

На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga. Сегодня рассмотрим плагин local_auth. Он помогает добавить в приложение вход через биометрию — отпечаток пальца или лицо.

Для начала работы нужно указать, что приложение использует эту функциональность, и пользователь может дать разрешение на нее. Для Android в AndroidManifest.xml:

<uses-permission android:name="android.permission.USE_BIOMETRIC"/>


Для iOS в info.plist:

<key>NSFaceIDUsageDescription</key>
<string>Причина использования</string>


Когда пользователь доходит до момента включения биометрии, то нужно проверить доступна ли она. Если всё работает, то можно выбрать, что показать на экране: иконку отпечатка или иконку FaceID. На некоторых Android смартфонах могут быть доступны оба типа.

final LocalAuthentication auth = LocalAuthentication();
final canAuthenticateWithBiometrics = await auth.canCheckBiometrics;
final isDeviceSupported = await auth.isDeviceSupported();
if (canAuthenticateWithBiometrics || isDeviceSupported) {
final availableBiometrics = await auth.getAvailableBiometrics();
if (availableBiometrics.contains(BiometricType.face)) {
... // Показываем иконку с лицом
} else if (availableBiometrics.contains(BiometricType.fingerprint)) {
... // Показываем иконку с отпечатком пальца
}
... // Другие действия для выполнения биометрии
}


Чтобы запросить биометрию, выполним следующий код:

try {
final didAuthenticate = await auth.authenticate(
localizedReason: 'Зачем пользователю ',
options: const AuthenticationOptions(biometricOnly: true),
);
... // Другие действия
} catch (e) {
... // Обработка ошибок
}


Но у этого плагина также есть и минусы, о которых мы поговорим на конференции «Стачка» 27-28 сентября в Санкт-Петербурге.

Промокод «спикер_10» подарит вам скидку 10% на билет 🎁

До встречи на конференции!
👍15🔥4🎉2👏1
Hola, Amigos! Рассказываем и показываем в карточках, как прошел BOOST для нас в 2024 году.

А еще раскрываем интригу, кто такая Лидочка! Знакомьтесь с нашим виртуальным менеджером по вашим нецелевым лидам. Переходите в чат, там все подробности⚙️

Проводили лето со всем IT-комьюнити и встретили осень легендарным треком «третье сентября» на афтепати.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3🍾1