Flutter. Много
2.93K subscribers
462 photos
24 videos
285 links
Заказать мобильную разработку: https://amiga.ru//?utm_source=tg
Заказать рекламу в канале @amiga_agency_bot

Новости Flutter-разработки, дайджесты мероприятий, личный опыт.
Download Telegram
Hola, Amigos! Сегодня мы вводим новую рубрику - обзоры правил для статического анализатора #lintRules.

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

Поэтому ловите первую подборку. А также рассказывайте в комментариях, про какие правила рассказать в следующий раз?
👍17
Hola, Amigos! Сегодня посмотрим на один пакет, который может быть полезен в разработке - paged_vertical_calendar.

Он выводит календарь непрерывным вертикальным списком вместо одного месяца переключением. Это полезно в таких случаях:
⭕️ Нужно показать сразу несколько месяцев;
⭕️ Есть выбор интервала дат, которые могут быть в разных месяцах;
⭕️ Нужен другой UX, чем стандартный.

Давайте разберем его базовое использование:


PagedVerticalCalendar(
minDate: DateTime.now().subtract(Duration(days 365)),
maxDate: DateTime.now().add(Duration(days 365)),
initialDate: DateTime.now().add(Duration(days 3)),
invisibleMonthsThreshold: 1,
startWeekWithSunday: true,
onMonthLoaded: (year, month) {
// on month widget load
},
onDayPressed: (value) {
// on day widget pressed
},
onPaginationCompleted: (direction) {
// on pagination completion
},
);


Пройдемся по его параметрам:
• minDate и maxDate помогают нам сделать календарь не бесконечным;
• initialDate - дата начального месяца, который будет показан пользователю посередине списка;
• invisibleMonthThreshold - количество месяцев, которые пользователь не видит, но они просчитываются для дальнейшего отображения;
• startWeekWithSunday - полезное свойство, если приложение работает в странах, где неделя начинается с воскресенья, а не с понедельника;
• onMonthLoaded, onPaginationCompleted - обратные вызовы, которые помогают подгружать данные, если это нужно;
• onDayPressed - обработка нажатия на какой-либо день.

Так как это все-таки список, то ему доступны еще параметры, которые есть у других похожих виджетов - controller, physics, addAutomaticKeepAlives и reverse.

Но самое интересное и важное, что такой календарь можно максимально кастомизировать под себя следующими параметрами:
• dayAspectRatio - помогает задать соотношение сторон для виджета дня;
• weekdaysToHide - скрывает дни недели, если нужно показать только определенные. Например, только рабочие дни;
• listPadding - позволяет задать отступы у списка;
• monthBuilder - позволяет кастомизировать шапку месяца под себя;
• dayBuilder - позволяет кастомизировать отображение дня на календаре.

Рассказывайте, решали ли уже подобные задачи и пользовались ли этим пакетом в своих проектах?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1
Дайджест июля

Hola, Amigos! Собрали в одну подборку все полезные посты июля, которые вы могли пропустить. Выбирайте, что интересно, и переходите по ссылкам для полезного выходного чтива:

🔴Организация импортов в проекте;
🔴Обзоры виджетов OverflowBar и SliverMainAxisGroup;
🔴Кастомизация виджета Slider - Часть 1. Часть 2. Часть 3;
🔴Правила статического анализа;
🔴Обзор пакета paged_vertical_calendar.

Всем хорошего кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Hola, Amigos! Сегодня вышли Flutter 3.47 и Dart 3.13. Давайте вместе разберемся, что в них нового.

Самое главное и важное изменение - библиотеки Material и Cupertino стали отдельными и доступны на pub.dev как material_ui и cupertino_ui.

Кроме этого, есть важные новости по операционным системам от Apple:
• Повышены минимальные версии до iOS 15 и macOS 12;
• Переход на UIScene становится обязательным, так как Xcode 27 перестанет собирать приложения без него;
• Появилась возможность отключения сборки под macOS на процессорах Intel;
• Разработчики Flutter сообщают, что 92 из 100 пакетов из топа pub.dev перехали на Swift Package Manager.
Если вы еще не совершили миграции на UIScene и SPM, то сейчас самое время.

Касаемо других платформ:
• Теперь можно собирать релизный Flutter Web на WASM при помощи команды flutter build web --release --wasm;
• Impeller теперь используется по умолчанию на десктопе;
• Добавили flavor’ы для Windows и Linux.

Обновления Dart принесло нам новые конструкторы и новый способ объявления классов.

А также Flutter 3.47 и Dart 3.13 получили много исправлений.

Делитесь в комментариях, мигрировали ли вы свои приложения на UIScene и SPM?
❤3🔥3👍1
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня посмотрим на чек-лист того, что мы проверяем перед публикацией приложений.

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

Во-вторых, подготавливаем все данные для публикации:
• Иконка в коде приложения, названия пакетов;
• Ключ для сборки Android - для первой публикации приложения готовим новый. Для уже опубликованных приложений с их заменой - если ключа нет, то готовим новый и меняем в Google Play и других сторах;
• Материалы для магазинов приложений - скриншоты, описания, ключевые слова, данные для модерации и т. д.
• Меняем URL бэкенда, если это не было сделано ранее.

В-третьих, проверяемся по требованиям от Google Play и App Store. Если приложение подходит под них, то оно пройдет и в другие магазины приложений.

После этого проверяются внутренние фичи, которые мы обычно закладываем на будущее:
• Различные Feature Toggles для закрытия какого-либо функционала от пользователей
• Система уведомлений об обновлении приложения

Перед сборкой мы проверяем дополнительные системы:
• Аналитика. Что все события расставлены, работают и ключи заменены на релизные, если это требуется.
• Сбор ошибок и вылетов. Тоже проверяем, что подключено и как следует работает.
• Пуши. Как минимум отправляем на одно устройство каждой ОС и проверяем, что пуш отобразился

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

Делитесь в комментариях, с какими сложностями вы чаще всего встречаетесь при публикации приложений?
❤8🔥6👍3🥰1💯1
This media is not supported in your browser
VIEW IN TELEGRAM
AI BOOST’26: выручка падает — что делают крупные digital-агентства и при чем здесь AI

22–23 октября в Москве пройдет AI BOOST’26 — конференция для владельцев, руководителей и команд digital- и IT-агентств о трансформации бизнеса в эпоху кризиса и AI.

В центре внимания — конкретные изменения, которые происходят уже сейчас: как оптимизировать расходы, увеличить продажи, ускорить производство, повысить качество и встроить AI в процессы всей компании.

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

Главный вопрос года: какую стратегию выбрать, когда старая перестала обеспечивать рост — AI-интеграцию, собственный продукт или новую нишу?

Среди 100 спикеров:
🔴Александр Богданов, AGIMA
🔴Максим Малышев, NOTAMEDIA
🔴Денис Ломов, Red Collar
🔴Антон Черноталов, E-promo
🔴Александр Щербина, ITECH
🔴Александр Хачиян, AWG и Skillstaff
🔴Никита Прохоров, Sidorin Lab
🔴Владислав Шевченко, red_mad_robot
🔴Иван Поддубный, ВебПрактик
🔴Михаил Крикало, ex-Andersen
🔴Олег Бунин, Highload

В программе — практические вопросы:
— как продолжить расти при падающем аутстаффе?
— как мигрировать из сервисной компании в продуктовую?
— как будет устроен маркетинг ближайших лет?
— как в новых реалиях находить клиентов?
— как AI изменил процесс работы над дизайном?
— как при помощи AI поставлять больше фич той же командой?

Вас ждет три потока:
— управление бизнесом;
— продажи и маркетинг;
— управление разработкой и проектами.

Для команд от 3 человек действуют индивидуальные условия и скидки.

Команда Amiga тоже будет на конференции — приходите знакомиться, обмениваться опытом и обсуждать, куда движется рынок. Увидимся на AI BOOST’26!

22–23 октября, Москва
Регистрация: boostconf.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👌3
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga.

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

Об этом мы максимально подробно рассказали в нашей новой статье и поделились собственным опытом реализации подключения к Charles Proxy.

🔗 Ссылка на статью

Делитесь в комментариях, приходилось ли вам делать такие настройки?
🔥7❤5
Hola, Amigos! Когда нужно проверить отступы и выравнивание элементов, удобно наложить на интерфейс сетку.

Во Flutter для этого есть встроенный виджет GridPaper: он рисует линии поверх своего child, начиная от левого верхнего угла.

Допустим, мы хотим проверить расположение элементов относительно сетки с шагом 8 логических пикселей:


GridPaper(
color: const Color(0x400000FF),
interval: 80,
divisions: 10,
subdivisions: 1,
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
const Text('Настройки профиля'),
const SizedBox(height: 24),
ElevatedButton(
onPressed: () {},
child: const Text('Сохранить'),
),
],
),
),
);


Плотность сетки задают три параметра:
• interval — расстояние между основными линиями;
• divisions — количество делений внутри основной ячейки;
• subdivisions — дополнительные деления внутри каждого такого участка.

Сетка помогает визуально заметить смещения, но сама не выравнивает элементы и не меняет отступы. Это ориентир: увидели расхождение, проверили размеры и ограничения нужного виджета. Для такого примера достаточно обернуть нужный участок экрана в GridPaper. Только не забудьте убрать его после проверки 🙂

Делитесь в комментариях, используете сетку при проверке верстки или сверяете отдельные размеры через Flutter Inspector?
❤4👍3🔥2