AI-centric архитектура Flutter-приложения (и не только) для небольших стартапов

Мысли о масштабируемой архитектуре приложений через кодовую структуру и философии «developer as a user»; подходит для indie-разработчиков и стартапов на ранних стадиях.

Язык программирования, созданный Google

Мысли о масштабируемой архитектуре приложений через кодовую структуру и философии «developer as a user»; подходит для indie-разработчиков и стартапов на ранних стадиях.

Уже несколько лет мы занимаемся развитием клиентского приложения на Flutter: начинали с мобильных платформ, когда веб и десктоп вышли в бету – портировали его и на эти платформы. Последние два года PWA крутится в проде и в некоторых регионах является самой популярной платформой для нашего приложения.
Недавно мы попробовали мигрировать наше приложение с Flutter Web на Jaspr – под катом расскажем о том, почему мы это сделали, с какими трудностями столкнулись и какие выводы сделали.

Привет, Хабр! Это Аня, руководитель Flutter-команды Friflex, и Катя, Flutter-разработчица Friflex.
В этой статье разберем, что такое состояние во Flutter. Катя расскажет, как отличать локальное состояние от состояния приложения и в каких случаях достаточно setState(). Аня покажет, как передавать данные по дереву виджетов с помощью InheritedWidget, и разберет, как устроен Provider.

Про сборщик мусора сейчас почти не говорят, но я часто слышу от коллег, что на собеседованиях про него спрашивают. Ещё заметил, что это один из популярных вопросов. Нормальных статей или обзоров про это почти нет, а если и есть, то они тяжёлые и очень нагруженные технической частью, которую понимают только сами создатели статей.
Эта статья — моя попытка объяснить вам доходчивым языком, что же такое Garbage Collector в Dart, объяснить почему эти некоторые знания нам нужны на практике и что из всей этой тяжелой, технической внутрянки вам необходимо знать.

В декабре 2025 года многие ведущие инженеры мира все-таки высказались вслух о том, о чём боялись даже думать: «Кажется, LLM пишет код лучше меня».
Фархан Тавар, руководитель инженерного направления Shopify (3000 инженеров, 10% мирового e-commerce), рассказал, как они к этому готовились — и что делать дальше. Спойлер: сокращать команду они не только не собираются, но и наняли уже 1000 интернов. Но обо всем – в статье

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

Привет! Это Анна, руководитель Flutter-команды Friflex. Я иногда провожу технические собеседования с Flutter-разработчиками и вижу, с чем чаще всего сталкиваются начинающие специалисты.
В этой статье я собрала чек-лист для подготовки: как рассказать об опыте, какие темы повторить и как вести себя, если вы не знаете ответ или сильно волнуетесь.
В прошлой статье я рассказывал, как собрал мобильный видеоредактор с мультитреком, кейфреймами и ИИ‑ассистентом, который монтирует по промпту. Тогда ассистент умел резать, двигать, накладывать эффекты — но создавать картинки и видео приходилось где‑то сбоку: сгенерировал, скачал, импортировал, подогнал под проект.
Это раздражало. Монтаж — это поток. Любая лишняя вкладка в браузере — как пауза посреди джазовой импровизации.
Поэтому в MultiTrack появился встроенный ИИ‑генератор — отдельная панель «AI Generation» на базе Higgsfield. Не заглушка «попробуйте нейросеть», а полноценный цикл: промпт → генерация → скачивание → Import to Project → клип сразу в библиотеке и на таймлайне. Без выхода из редактора.

Эта статья про то, как я сделал голосовой дневник мыслей для когнитивно-поведенческой терапии, почему распознавание речи у меня крутится прямо на телефоне, и какие на этом пути были технические развилки. Кода почти не будет, будет архитектура и обоснование решений.
Я сам прошёл через тревожные расстройства, панические атаки и несколько депрессивных периодов. Из всего, что мне помогало, переломной стала КПТ, и у неё есть домашняя часть, дневник мыслей, который нужно вести между сессиями. Вести его текстом в момент тревоги у меня не получалось годами, и в какой-то момент я понял, что хочу диктовать его голосом. Так появился проект, который я тут и разбираю.

Во Flutter экран связан с жизненным циклом виджета: пользователь может вернуться назад, открыть другую вкладку или свернуть приложение, после чего состояние экрана уже будет уничтожено. При этом асинхронная операция может продолжать выполняться: сетевой запрос, обработка данных или отложенный callback не завершаются мгновенно.
Основная сложность заключается в том, что после ожидания состояние приложения может измениться: экран мог быть закрыт, пользователь мог ввести новый поисковый запрос, а активная вкладка — смениться. Если после этого без дополнительных проверок обновить состояние или выполнить действие с интерфейсом, приложение может показать устаревшие данные, вызвать лишнюю перерисовку или получить ошибку при обращении к уже неактуальному экрану.
В этой статье рассматриваются практические сценарии, которые часто встречаются в обычных Flutter-приложениях: загрузка данных, поиск, работа с подписками и обновление интерфейса после асинхронной операции.

Когда я начинал этот pet-проект, у меня в голове была одна цель: за полтора-два года вытеснить ноунейм-сайты из верхушки выдачи Яндекса и Google по запросам типа «калькулятор бетона», «расчёт утеплителя», «сколько нужно плитки на ванную». Не зайти пятым на странице, не получить какой-то «нормальный трафик», а конкретно занять первое место в нише. Сайт — getmasterok.ru, ему около трёх месяцев. Но какой же я был легкомысленный и как я сильно ошибался.
Амбиция выглядит наивно, и я отдаю себе в этом отчёт. Ниша строительных калькуляторов забита под потолок: десятки доменов, заточенных под партнёрки крупного DIY-ретейла, ещё столько же пустых SEO-шаблонов с одним и тем же текстом, прогнанным через рерайт. Туда не идут крупные команды, потому что выручка с лида в этой нише небольшая. Туда идут одиночки, маркетологи на фрилансе и редкие подрядчики, которым заказали сайт условно за несколько тысяч под ключ. Качество предложения в среднем на уровне 2010 года.
Это и есть причина, по которой я туда полез. Когда вся ниша держится на технически неряшливых продуктах, у одиночки с инженерным фоном есть окно. Я не питаю иллюзий, что «возьму качеством и всё». Я понимаю, что Google маринует новые домены, что Яндекс хочет видеть поведенческие, что SEO без бюджета — это игра вдолгую. Но проверить гипотезу, реально ли в этой нише отбить лидерство одним инженерным качеством расчётов и нормальным UX, мне интересно. Если не получится за два года, я хотя бы пойму, чего не хватает помимо качества продукта.

В этом году на конференции Google I/O 2026 команды Flutter и Dart отмечают важную тему: «Везде, каждый день, создано всеми, для всех».
Dart 3.12 воплощает эту идею в жизнь. Мы делаем язык более доступным и продуктивным. Лаконичные новые примитивы, такие как приватные именованные параметры, наряду с экспериментальной поддержкой основных конструкторов, делают повседневное программирование более чистым. Но мы не остановились на синтаксическом уровне. Новые функции, такие как Agentic Hot Reload и добавление Genkit в экосистему Dart, гарантируют, что вы сможете создавать высокопроизводительные, готовые к использованию ИИ и агентные приложения, которые будут доступны пользователям в любой точке мира. Это справедливо как для индивидуального программирования, так и для парного программирования с ИИ-агентом.
Так что вперед flutter upgrade, следуйте инструкциям, чтобы изучить новые возможности Dart 3.12. Но помните, что более мощный Dart — это только половина дела. Когда вы будете готовы увидеть, как эти функции преобразуются в красивый пользовательский интерфейс, ознакомьтесь с публикацией в блоге «Что нового во Flutter» или на Хабре.

Google I/O 2026.
Flutter 3.44 уже здесь, и это грандиозное событие! Этот релиз знаменует собой важную веху в истории Flutter: Hybrid Composition++ для Android, Swift Package Manager в качестве нового менеджера пакетов по умолчанию для iOS/macOS и улучшенную поддержку Vulkan для Impeller. Мы представляем предварительную версию поддержки многооконного режима для настольных компьютеров, и Canonical станет нашим новым ведущим разработчиком, а также начинаем масштабную архитектурную эволюцию, отделяя Material и Cupertino от основного фреймворка. Мы переосмысливаем UX для агентного взаимодействия с пользователями с помощью GenUl и переосмысливаем опыт разработчиков с помощью Agentic Hot Reload и Dart & Flutter Agent Skills. Flutter расширяет возможности приложений следующего поколения — повсюду, от мультимедийной системы Toyota RAV4 2026 года до грядущего SDK для webOS от LG. Мы очень рады поделиться с вами всеми новостями и обновлениями; добро пожаловать в Flutter 3.44!

Итак, погрузимся в прошлое, помянем конец октября 2023 года.
При обновлении Flutter до версии 3.13.8 после запуска flutter doctor я получил неожиданное предупреждение:

Экосистема Flutter совершила один из самых значительных скачков вперед. С выходом Flutter 3.44 команда официально сделала Swift Package Manager (SwiftPM) менеджером зависимостей по умолчанию для iOS и macOS, ознаменовав начало конца эпохи CocoaPods.
Но это еще не все. Этот релиз также знаменует собой серьезный архитектурный сдвиг в том, как поставляются виджеты Material и Cupertino. Давайте углубимся в детали.

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

Навигация во Flutter — это постоянные компромиссы. Сначала кажется всё просто: push и pop. А потом проект растёт, появляются табы, вложенные модули, диплинки — и выясняется, что каждый следующий экран открывается по‑разному, а pop() в одном месте ведёт себя не так, как в другом.
Navigator 1.0 прост и понятен, но при масштабировании рассыпается. Navigator 2.0 даёт полный контроль, но требует столько бойлерплейта, что проще изобрести свой фреймворк. Сообщество это поняло — и появились пакеты поверх Navigator 2.0. go_router упрощает жизнь, но недавно перешёл в режим поддержки: только баг‑фиксы, никаких новых фич. auto_route даёт type‑safety, но тянет за собой кодогенерацию.
Мы прошли через все эти варианты в процессе разработки Яндекс Про — приложения для водителей и курьеров, где навигация включает сотни фич, несколько команд, вложенные модули, табы, диплинки и legacy‑код на Navigator 1.0. А ещё — сложную логику переходов, где точный контроль над состоянием навигации не просто желателен, а критичен: экран закрывается там, где не должен, стек оказывается в неожиданном состоянии, и разобраться в причинах через стандартный API почти невозможно.
Так появился yx_navigation — новый пакет в нашей экосистеме архитектурных решений для Flutter, после yx_scope (DI) и yx_state (управление состоянием). Дальше расскажу, с какими трудностями мы столкнулись, какие требования сформулировали, как устроен yx_navigation сегодня и как именно он решает проблемы крупных приложений.

Привет, Хабр. Меня зовут Карим, я Flutter разработчик уже 7 лет и последний месяц я делаю фреймворк для server-driven UI на Dart.
Зачем еще один SDUI
У всех реализаций, которые попадались мне на глаза, есть общая черта - собственный DSL. JSON-схемы, кастомные конфиги. Для каждого решения приходится учить новый язык.
При этом Flutter-разработчики уже знают хороший язык описания UI. Он называется Flutter.

Привет хабр! Есть проекты, которые начинаются не с бизнес‑плана, не с инвесторов и не с попытки «зайти в рынок». Они начинаются чуть проще — ты смотришь на существующие решения, пользуешься ими, раздражаешься и думаешь: «А почему это до сих пор выглядит именно так?»
Примерно так у меня появился ReDrive.
ReDrive — это open‑source мобильное OBD2-приложение, которое превращает смартфон в цифровую приборную панель и диагностический инструмент для автомобиля. Идея простая: подключаешь ELM327-совместимый адаптер к OBD2-порту машины, открываешь приложение и видишь данные с ECU в понятном виде: скорость, обороты, температуру, напряжение, состояние подключения, ошибки и другую телеметрию.

Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead агентства продуктовой разработки Amiga и соавтор книги «Основы Flutter». Иногда нужно реализовать поиск по данным без участия бэкенда. Самый простой вариант — обычное вхождение строки — не прощает опечаток. Одна лишняя буква, и поиск выдает пустоту.
В статье разберем, как усовершенствовать этот процесс: научим поиск обрабатывать ошибки и сортировать результаты по степени совпадения.