Как стать автором
Обновить
9.43

Flutter *

Фреймворк для кросс-платформенной разработки

Сначала показывать
Порог рейтинга

⚡️Вести с полей - Duit

Новый релиз flutter_duit v3.4.0!

Что внутри:

  • ⚙️ Новые виджеты: GridView, Card, AppBar, Scaffold, InkWell, CarouseView, AnimatedContainer

  • ⚙️ Повышена минимальная версия Flutter SDK для использования Duit (3.24.x)

Подробности о самом интересном:

🔥 Поддержка виджетов Scaffold, AppBar и Card ознаменует начало работы над полноценной реализации всего набора виджетов из библиотеки material

🚀 Приведен в порядок публичный проект на github, который поможет отслеживать прогресс разработки виджетов и новых фич фреймворка

О проекте:

Теги:
0
Комментарии0

⚡️Вести с полей - Duit

Новый релиз flutter_duit v3.3.0!

Что внутри:

  • ⚙️ Wasm-совместимая реализация WebSocketTransport

  • ⚙️ Новые виджеты: SafeArea, IntrinsicWidth, RemoteSubtree

  • ⚙️ Экспорт API duit_kernel, полноценная поддержка тем фреймворком

  • ⚙️ Автоматический тайпкаст контроллеров кастомных виджетов

  • ⚙️ Исправлена ошибка аттача контроллера к драйверу после тайпкаста

Подробности о самом интересном:

🔥 Среди новых виджетов есть совершенно особенный - RemoteSubtree. Этот виджет позволяет динамически загружать собственный контент (макет дочерних поддеревьев виджетов). Ключевая фича виджета - возможность передать ему список зависимостей (по аналогии с действиями), благодаря которым будут собраны данные виджетов и переданы в теле запроса на получение контента.

🚀 Экспорт API duit_kernel, который отвечает за работу тем. С этого релиза этой функцией можно уверенно пользоваться! В example app добавлен пример использования нового API.

🎁 Работа с кастомными виджетами стала еще более удобной! Больше не требуется вручную кастовать UIElementController<dynamic> к UIElementController<тип_атрибута> - приведение типов будет выполенено автоматически.

О проекте:

Теги:
Рейтинг0
Комментарии0

Приближается конференция для Flutter-специалистов

Уже в эту пятницу, 21 февраля, в Москве пройдет FlutterConf — профессиональная конференция по Flutter. Ожидается, что соберется больше двухсот специалистов — докладчиков и слушателей.  

Доклады будут читаться в два потока, тематика достаточно широкая: реальные кейсы с нестандартными требованиями, архитектурные решения и инструменты для Flutter-проектов. Выступать будут разработчики и тимлиды из Amiga, Яндекс-Про, Билайна, Лаборатории Касперского, Потока, Открытой мобильной платформы, Friflex, MadBrains, BetBoom.

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

Посмотреть расписание конференции и зарегистрироваться можно на сайте (регистрация платная), посетить ее можно в Москве в Radisson Blu Belorusskaya Moscow или же подключиться удаленно.

От «Финама» мы отправим туда нескольких выразивших желание разработчиков из Москвы, а также будем смотреть мероприятие в Питере, в коворкинге. Наша команда работает с Flutter с 2019 года, наши приложения выигрывают премии на тематических мероприятиях. Кстати, прямо сейчас у нас открыта вакансия Flutter-разработчика, и, если кому-то из хабравчан интересно – написать можно нашему рекрутеру.

Теги:
Рейтинг0
Комментарии0

Обнаружены проблемы с отображением Flutter приложений на Snapdragon 8.

https://github.com/flutter/flutter/issues/137002

Проблемы касаются тех приложений, которые используют Impeller (новый графический движок, который пришёл на замену Skia), при его отключении всё становится хорошо.
Проблемы замечены на Samsung Galaxy S22+, Redmagic 10, Honor Magic6 Lite 5G и Honor Porshe Design Magic7 PSR. На всех этих устройствах установлен Snapdragon 8.

Пример глитча:

Теги:
Рейтинг0
Комментарии2

‼️ Dart отказывается от макросов! Что дальше? ‼️

Официальное объявление от команды Dart: разработка макросов остановлена.

После нескольких лет экспериментов выяснилось, что их реализация слишком сильно замедляет компиляцию и ухудшает разработческий опыт (о чем не раз писал и говорил на Crossconf 2024). У меня были предположения, что мы увидим макросы только в 2026-м году, но такого поворота событий совсем не ожидал >_<

Конечно, это не повод ставить крест на Dart, хотя и очень обидно! 😭 Вместо макросов команда сосредоточится на:

  • Улучшении работы с данными – это самая востребованная фича среди разработчиков.

  • Оптимизации build_runner – ускорение сборки и улучшение генерации кода.

  • Внедрении augmentations – новый инструмент, который упростит кодогенерацию.

👉 Подробнее об этом можно прочитать в статье на Medium, которую написал директор по разработке Dart и его экосистемы Vijay Menon

Что думаете по этому поводу? Какие в таком случае новые фичи ждете? Разочарованы ли отменой макросов?

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Как CodeStyle спасает Flutter-проекты от хаоса

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

Вот что вы получите:

  • Читаемость: новые участники команды быстрее понимают проект.

  • Стандартизация: вся кодовая база выглядит так, будто ее писал один человек.

  • Поддерживаемость: проще рефакторить и находить ошибки.

Почему CodeStyle особенно важен для Flutter

Flutter на проектах дает гибкость, которая при отсутствии дисциплины превращается в проблему. Например, вы можете столкнуться с:

  • разрозненной структурой файлов, которая затрудняет поиск компонентов;

  • непоследовательным оформлением кода, которое усложняет его понимание;

  • дублированием библиотек и функционала, которое приводит к путанице.

Единый CodeStyle решает эти проблемы и создает прозрачную и предсказуемую структуру проекта.

Как внедрить CodeStyle: 4 шага

1. Обучение

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

2. Автоматизация

Настройте инструменты для проверки кода:

  • линтеры (например, flutter_lints) для автоматической проверки стиля;

  • pre-commit хуки (Husky или Lefthook) для форматирования кода перед коммитом.

3. Код-ревью

Сделайте ревью обязательным этапом Pull Request. Это улучшит качество кода и поможет следить за соблюдением правил.

4. Командное соглашение

Создайте документ с правилами CodeStyle и внедрите их в культуру команды. Пусть разработчики понимают, что стандарты упрощают жизнь каждому.

Если хотите внедрить эти подходы на своих проектах, читайте подробную статью от нашего Flutter-разработчика Никиты Грибкова. В ней найдете больше примеров, кода и рекомендаций.

Теги:
Рейтинг0
Комментарии0

Привет,Хабровчане ! Неожиданно решился на создание этой публикации – пусть она окажется полезной для кого-то из вас. Представьте ситуацию: рабочий день позади, включаем компьютер, запускаем музыкальное сопровождение и... прямо в кресле дивана нас уже сморит Морфей. Пробуждение же наполняет осознанием неразрешимой дилеммы – выключить ПК или переключить трек? Особенно когда репертуар оставляет желать лучшего!

Вот и приходится преодолевать себя, чтобы добраться до компьютера.

Так вот, в качестве решения этой проблемы разрабатываю приложение для Android с небольшим сервером на PC (начало только под Windows).

Основной фишкой станет регулировка яркости экранов, удаленное отключение ПК, переключение треков в плеере.

Телефонное приложение будет максимально чистым: без рекламы, подписок или дополнительных платежей.

Я – инженер(технарь), а не профессиональный программист, так что обещаю уделять больше внимания техническим моментам .

Все будет сделано в меру моих умений и возможностей. Благодарен за внимание! По мере продвижения работы буду дополнять этот пост новыми деталями.

А какого функционала не хватает вам ?

Пока все в стиле демо
Пока все в стиле демо

Сделал ещё несколько дэмок . 2 приложения на kivymd (python3) связь с сервером http запросами ,но вес приложения уменьшить не удалось . Попробовал на flutter спасибо Гуглу ,ии и другу разработчику ,связь. с сервером с помощью протокола mqtt.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии11

Прошедшее мероприятие от команды Flutter - #FlutterInProduction можно разбить на 3 части (если лень читать - вот ссылки на видеоразбор мероприятия ЮТУБ ВК)

👉 Разговор про эры развития Flutter:

  • эра экспериментов (2014 - 2018)

  • эра роста ( 2018 - 2022)

  • Эра кровавого энтерпрайза (начиная с середины 2022 года)

Разработчики наконец-то определились со зрелостью фреймворка и на протяжении этой части (да и всего мероприятия) нам показывали, что Flutter применяется в разных областях и крупными компаниями с огромнейшим потоком клиентов ^_^

👉 Экосистема

Тут было про поддержку различных IDE, что на pub доступны более 50к пакетов. Заострили внимание на том, что вокруг Flutter выстраивается экосистема (FlutterFlow, Shorebird, Serverpod, Codemagic), в то время как он сам по гланды интегрирован в экосистему Google☝️

Отдельно следует отметить упоминание о Flutter Consultants, что говорит о реальной зрелости фреймворка😎

👉 Если обобщить все услышанное с секцией Roadmap, получится следующая выжимка над чем будет работать команда Flutter в 2025 году:

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

🔥 Impeller (Flutter GPU) не только на мобилках, но и на десктопе (web пока под большим вопросом)

🔥🎉🥳 Средства предварительного просмотра виджетов с поддержкой редактирования

🔥🎉🥳 Прямое взаимодействие с native platform

🔥🔥🔥 Ускорение написания и упрощение чтение кода (p.s. это подгорает мой пердак от увиденных декораторов 😂, первичный конструктор - норм тема😎)

Не все показанное может быть реализовано на 100% От некоторых фич могут отказаться или перенести на потом.

А что вы думаете о прошедшем мероприятии?

Теги:
Рейтинг0
Комментарии1

Прошедшее мероприятие от команды Flutter - #FlutterInProduction можно разбить на 3 части (если лень читать - вот ссылки на видеоразбор мероприятия ЮТУБ ВК)

👉 Разговор про эры развития Flutter:

  • эра экспериментов (2014 - 2018)

  • эра роста ( 2018 - 2022)

  • Эра кровавого энтерпрайза (начиная с середины 2022 года)

Разработчики наконец-то определились со зрелостью фреймворка и на протяжении этой части (да и всего мероприятия) нам показывали, что Flutter применяется в разных областях и крупными компаниями с огромнейшим потоком клиентов ^_^

👉 Экосистема

Тут было про поддержку различных IDE, что на pub доступны более 50к пакетов. Заострили внимание на том, что вокруг Flutter выстраивается экосистема (FlutterFlow, Shorebird, Serverpod, Codemagic), в то время как он сам по гланды интегрирован в экосистему Google☝️

Отдельно следует отметить упоминание о Flutter Consultants, что говорит о реальной зрелости фреймворка😎

👉 Если обобщить все услышанное с секцией Roadmap, получится следующая выжимка над чем будет работать команда Flutter в 2025 году:

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

🔥 Impeller (Flutter GPU) не только на мобилках, но и на десктопе (web пока под большим вопросом)

🔥🎉🥳 Средства предварительного просмотра виджетов с поддержкой редактирования

🔥🎉🥳 Прямое взаимодействие с native platform

🔥🔥🔥 Ускорение написания и упрощение чтение кода (p.s. это подгорает мой пердак от увиденных декораторов 😂, первичный конструктор - норм тема😎)

Не все показанное может быть реализовано на 100% От некоторых фич могут отказаться или перенести на потом.

А что вы думаете о прошедшем мероприятии?

Теги:
Рейтинг0
Комментарии0

Внедряем модели машинного обучения в мобильное приложение на Flutter

Если Flutter-приложение нужно сделать более удобным и инклюзивным, скорее всего, придется использовать технологии ML. Вот только несколько примеров задач, в которых машинное обучение наверняка понадобится:

  • классификация изображений: чтобы приложение могло распознавать объекты на фотографиях или видео (например, Google Lens);

  • обработка естественного языка (NLP): в приложениях с голосовыми ассистентами или чат-ботами ML обрабатывает речь и тексты;

  • персонализация: алгоритмы ML анализируют поведение пользователей и предлагают персонализированный контент или рекомендации;

  • распознавание голоса: используется в приложениях для конвертации речи в текст и команд.

Существует несколько способов, как интегрировать модели машинного обучения в приложение. Можно воспользоваться ML Kit от Firebase или библиотеками на Dart. Но самое распространенное решение — фреймворк TensorFlow Lite (TFLite). Его главное (но не единственное) преимущество — что он будет работать в том числе тогда, когда смартфон не подключен к интернету.

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

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Нативные инструменты для создания виджетов во Flutter-приложении

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

Но существуют и нативные инструменты, которые интегрируются с Flutter. Они, например, позволяют внедрять Home Widgets — элементы, с которыми можно взаимодействовать напрямую с домашнего экрана

Когда виджеты разработаны, их нужно внедрить в приложение. Библиотека home_widget предоставляет набор инструментов для работы с нативными виджетами, данные методы мы можем вызвать при помощи класса HomeWidget. Вот самые важные из методов:

  1. Future<bool?> saveWidgetData<T>( String id, T? data ) 

    Метод позволяет сохранить передаваемые данные в хранилище нашего виджета.

  2. Future<bool?> updateWidget({String? name, String? androidName, String? iOSName, String? qualifiedAndroidName,})

    Метод вызывается для обновления нашего виджета.

  3. Future<T?> getWidgetData<T>(String id, {T? defaultValue,})

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

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

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии0

🛠️ Главные инструменты Rive

Для работы с Rive Animation лучше использовать их UI-интерфейс, в котором и происходит создание и настройка самой анимации. Анимация состоит из нескольких составляющих. Они больше знакомы дизайнерам, но, если кратко, вот некоторые из них.

  1. Artboard: слой, который является холстом анимации — на нем располагаются остальные элементы. В нем можно задать цвет и размер фона. В каждом файле Rive есть хотя бы один такой.

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

  3. Shape: Rive позволяет создавать, редактировать и анимировать векторную графику, используя процедурные или пользовательские фигуры. Из них чаще всего и состоит весь интерфейс.

  4. Pen: это инструмент, который позволяет делать очень сложные кастомные фигуры.

Про анимации и Flutter-приложения много пишет руководитель нашего отдела мобильной разработки Саша Ворожищев — подписывайтесь на его канал, если интересна эта тема.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Hola, Amigos! Делюсь с вами записью своего доклада с конференции Mobius на тему «Создание indoor-карты здания на Flutter». Рассказал, как реализовать размещение на одном или нескольких экранах внутренней карты здания. А также раскрыл подходы и собственное решение с использованием Flutter.

Держите ссылки:

YOUTUBE 

VK

Смотрите на любой удобной платформе и делитесь в нашем чате мобильных разработчиков, на какую тему вы бы точно пришли на конференцию?

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

Hola, Amigos! На связи Павел Гершевич, Flutter Team Lead в Amiga. Сегодня поговорим про отображение HTML-тегов как виджетов в наших приложениях на Flutter.

Чаще всего для этого используется библиотека flutter_html:

Html(data: ‘<p>Hello World</p>’);

Но у нее есть несколько минусов:

– Она больше года не обновлялась, что с одной стороны хорошо, так как она стабильна, а с другой — она уже устаревает.
–В ней есть баги. Например, если внутри тега <p> окажется список (<ul>, <ol>), то снизу появляется отступ, равный высоте списка.
– Не очень понятная система стилизации. Чтобы что-то изменить, нужно разобраться, как это делается, так как вместо CSS-атрибутов используются собственные подходы.

Пример стилизации, где нужно поменять размер шрифта для всего документа:

  data: ...,
  style: {
    ‘*’: Style(
      fontSize: FontSize(15),
    ),
  }
);

Столкнувшись с этими минусами, мы решили перейти на вторую по популярности библиотеку — flutter_widget_from_html_core. Во-первых, она лишена вышеописанных багов. Во-вторых, она модульная, и к ней можно многое прикрутить.

HtmlWidget(‘<p>Hello World</p>’);

Со стилями всё интереснее. Шрифт устанавливается через стандартный TextStyle:

  ...,
  textStyle: 
TextStyle(...),
);

Но если нужно его раскрасить или что-то ещё, всё становится сложнее. Продолжение по ссылке.

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии0

Lottie vs. Rive

Это два популярных инструмента для создания анимаций в приложениях на Flutter. Сравнили их плюсы и минусы.

Lottie

Плюсы:

  • Простота использования: благодаря поддержке JSON, Lottie доступен для разработчиков любого уровня.

  • Кроссплатформенность: позволяет использовать одни и те же анимации на разных платформах.

  • Широкое комьюнити: в сети есть большое количество готовых анимаций.

  • Гибкость: Lottie позволяет настраивать анимацию и эффекты, что дает больше контроля над результатом.

Минусы:

  • Ограничения по сложности: Lottie не подходит для очень сложных анимаций с большим количеством элементов и эффектов.

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

Rive

Плюсы:

  • Интерактивность: Rive поддерживает интерактивные анимации, которые реагируют на пользовательские действия.

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

  • Производительность: с Rive получается быстрая и плавная анимация благодаря формату файлов.

Минусы:

  • Сложность использования: у Rive более сложный интерфейс, чем у Lottie, новичкам с ним работать трудно.

  • Размер файлов: Rive-анимации могут быть тяжелыми, и это влияет на вес всего приложения.

Итого: если вам нужны простые и легкие анимации с быстрой интеграцией, Lottie — отличный выбор. Для сложных, интерактивных и высокопроизводительных анимаций лучше подойдет Rive.

Подробнее про Rive писали в большой статье и в тг-канале о мобильной разработке и ИТ.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Преимущества Rive при разработке Flutter-приложений

При разработке Flutter-приложений используют много типов анимации, о чем мы ранее уже писали. Но Rive всё-таки превосходит большинство из них. Во-первых, у него удобный встроенный UI-интерфейс. Во-вторых, в Rive есть раздел Community, где авторы выкладывают бесплатные анимации.

В-третьих, — и это главное преимущество — в Rive есть State Machine. Это визуальный способ связать анимацию воедино и определить логику, которая управляет переходами. State Machine позволяет создавать интерактивную графику движения, готовую к внедрению в ваш продукт, приложение, игру или веб-сайт.

State Machine включает несколько уровней:

  • Graph — пространство, в котором мы добавляем состояния и соединяем переходы.

  • State — анимации временной шкалы, которые могут воспроизводиться в нашей машине состояний.

  • Transaction — переходы представляют собой логическую карту для State Machine.

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

  • Layers — слой State Machine, который позволяет воспроизводить одну анимацию за раз.

Подробнее о том, как работает Rive и как интегрировать его в проект, в нашем блоге.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Stable-версия Flutter стала поддерживать WASM

WebAssembly (WASM) — это новый способ запуска приложений в браузере. Это не замена JS, а возможность запускать код, написанный на других языках (C++, Rust или C#) вместе с JS. WASM оптимизирует размер и время загрузки и позволяет выполнять его на аппаратном уровне.

Компании, которые имеют дело с графикой (Unity, Figma), используют WASM для повышения скорости работы. Это обеспечивает более плавную работу с интерфейсом за счет снижения зависимости от JS.

Скомпилированное в WASM приложение может улучшить производительность в 2 раза по скорости рендеринга кадров. На видео выше сайт Wonderous, который мигрировал с чистого JS на WASM.

Что это значит для Flutter?

А то, что движок Dart компилируется в WASM и обеспечивает более высокую производительность. Это открывает новые перспективы для веб-приложений на Flutter. Можно контролировать каждый пиксель интерфейса на уровне Flutter и наслаждаться производительностью WASM.

Ограничения

- Safari пока не поддерживает WasmGC. Браузеры на iOS, например Chrome, используют WebKit, который пока тоже не поддерживает WasmGC.

- Ни flutter run, ни DevTools не поддерживают WASM в Flutter 3.22. Однако эта функция уже реализована и должна быть доступна в следующем стабильном релизе.

- Пока во Flutter работали над поддержкой WASM, пришлось заменить библиотеки dart:html и package:js. Либы, использующие эти библиотеки, должны мигрировать.

>> Телеграм-канал Саша расскажет // о мобильной разработке и ИТ

Теги:
Всего голосов 7: ↑7 и ↓0+9
Комментарии1

Плюсы и минусы GetX и BLoC

Сравнение архитектурных подходов GetX и BloC
Сравнение архитектурных подходов GetX и BloC
  1. Простота в использовании.

    У GetX более низкий порог входа, он проще в освоении, чем BLoC. Он предоставляет простой и понятный API для управления состоянием, маршрутизации и управления зависимостями.

  2. Масштабируемость.

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

  3. Тестирование.

    В BLoC есть мощные средства для тестирования потоков событий и состояний, например bloc_test.

  4. Возможности.

    GetX предоставляет широкий спектр возможностей для маршрутизации и управления состоянием и зависимостями.

Что же выбрать?

Зависит от конкретных требований проекта и ваших предпочтений. Если приложение небольшое и простое, то GetX может быть более подходящим решением. Он предоставляет понятный API для работы, с ним можно писать меньше кода, что существенно экономит время.

Однако если у вас большое приложение, то лучше выбрать BLoC. С ним вы получите более гибкий и модульный подход к управлению состоянием, а это помогает при масштабировании сложных приложений. Плюс BLoC обеспечит четкую декларативность и читаемость кода.

Это часть статьи Flutter-разработчика Айдара Мавлетбаева — полную версию с кодом ищите тут.

Теги:
Всего голосов 8: ↑7 и ↓1+8
Комментарии0

Наш опыт внедрения компонентной разработки

Компонентная разработка подразумевает деление мобильного приложения на отдельные компоненты (фичи). За каждый из них отвечает конкретный разработчик — Feature-оунер. Часть времени он посвящает задачам компонента, а часть — технической документации (Roadmap). Feature-оунер также контролирует работу остальных разработчиков, прикрепленных к фиче.

Мы решили перейти на новую методологию на текущем проекте по двум причинам:

  1. У тимлида на проекте было мало времени, его нужно было разгрузить.

  2. Проект смело можно назвать супераппом, он большой. И чтобы новый разработчик полноценно въехал в работу, обычно уходило 3–4 недели. Нам нужно было этот процесс ускорить.

Вот как мы распределили роли:

Методология подходит для больших команд — от 6 разработчиков. Идеально, если часть команды — это стажеры или джуниор-разработчики. В этом случае на позиции Feature-оунеров подходят миддлы, а в их команды можно добавлять стажеров или джунов.
Методология подходит для больших команд — от 6 разработчиков. Идеально, если часть команды — это стажеры или джуниор-разработчики. В этом случае на позиции Feature-оунеров подходят миддлы, а в их команды можно добавлять стажеров или джунов.

И вот что нам это дало:

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

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

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

Это короткая версия статьи о компонентной разработке от нашего тимлида Саши Омельяненко — весь текст читайте тут.

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Hola, Amigos! На связи Владимир Зевеке, соавтор Flutter. Много. Сегодня поделюсь пакетом screen_brightness, который помогает управлять яркостью экрана. В моём случае, этот виджет понадобился для более эффективной работы barcode.

❗️Screen_brightness работает только на реальных устройствах, на эмуляторе пакет функционировать не будет.

Перейдем к практике: в нашем приложении есть страница, которая должна быть всегда яркой на 70%. Если при переходе на неё экран тусклый, то мы должны поднять яркость до тех самых 70%.

Сделаем это в отдельном методе, который будем вызывать в initState().

double brightness = 1.0;

@override
void initState() {
  initBrightness();
  super.initState();
}

Future<void> initBrightness() async {
  brightness = await FlutterScreenWake.brightness;
  if (brightness < 0.7) {
 await FlutterScreenWake.setBrightness(0.7);
  }
}

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

return Material(
  child: PopScope(
 onPopInvoked: (value) async {
   await FlutterScreenWake.setBrightness(brightness);
 },
 child: Scaffold(
   appBar: AppBar(
     backgroundColor: const Color(0xFF1A1A18),
     leading: InkWell(
       onTap: () async {
         await FlutterScreenWake.setBrightness(brightness);
         if (mounted) {
           Navigator.of(context).pop();
         }
       },
        <…>
        ),
      ),
      body: <…>,
    ),
  ),
   );

Готово!

Теги:
Всего голосов 4: ↑4 и ↓0+5
Комментарии1
1