Flutter 3.32: что нового?

Добро пожаловать в Flutter 3.32! Этот релиз полон нововведений, которые ускорят вашу разработку и сделают приложения ещё ярче и отзывчивее. Готовьтесь к экспериментальной горячей перезагрузке веб-приложений, эффектным «сквирклам» в стиле Cupertino для максимальной нативности и глубоким интеграциям с ИИ-службами Firebase. Более тысячи коммитов от более чем 150 участников сообщества, включая почти сорок первопроходцев — Flutter 3.32 утверждает статус нашей экосистемы как площадки для совместной работы и инноваций. Приступим к знакомству с ключевыми изменениями!

Web

Горячая перезагрузка в браузере (Экспериментально)

Теперь и веб-приложения на Flutter поддерживают горячую перезагрузку! Это долгожданная возможность, отмеченная вторым по популярности запросом в трекере Flutter. Включить её можно простым флагом --web-experimental-hot-reload при запуске flutter run. Если вы отважитесь опробовать дату-стамп изменения сразу в браузере — разработчики будут рады вашим отзывам и репортам об ошибках через шаблон Web Hot Reload issue на GitHub.

Использование в VS Code
Добавьте в launch.json новую конфигурацию:

И активируйте опцию Dart: Flutter Hot Reload On Save, чтобы перезагрузка срабатывала при сохранении файла.

Командная строка

Нажмите r в терминале для горячей перезагрузки, R — для полного перезапуска.

DartPad
В среде DartPad появилась кнопка Reload для приложений на Flutter.

Framework

Разработчики продолжают переносить логику из библиотеки Material в ядро виджетов.

  • Появился новый виджет Expansible для создания расширяемых/сворачиваемых областей с разными темами. На его основе теперь строится знакомый ExpansionTile.
  • Появился RawMenuAnchor — универсальный якорь меню без стилизации, который послужит базой для Material-меню MenuAnchor и позволит вам полностью контролировать внешний вид и поведение всплывающих списков.

Эти рефакторы усиливают единообразие, упрощают повторное использование кода и облегчают мультиплатформенную разработку.

Cupertino

Сквирклы

В Flutter теперь поддерживается «сквиркл» — закруглённая суперэллиптическая форма, так любимая в интерфейсах Apple. Она плавнее стандартных скруглённых прямоугольников и задаёт идентичный iOS-образ. Новые API:

  1. RoundedSuperellipseBorder — рамка или форма виджета
  2. ClipRSuperellipse — обтравка содержимого
  3. Низкоуровневые методы Canvas.drawRSuperellipse, Canvas.clipRSuperellipse, Path.addRSuperellipse

Учтите, что пока поддержка ограничена iOS и Android, а на других платформах shape fallback’ится на обычный BorderRadius.

Листы и навигационные панели

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

Material

Набор улучшений и исправлений:

  • CarouselController получил метод animateToIndex для плавной навигации по индексам с поддержкой flexWeights.
  • TabBar теперь реагирует на onHover и onFocusChange, что важно для десктопных сценариев.
  • SearchAnchor и .bar обзавелись колбэками viewOnOpen и onOpen.
  • CalendarDatePicker научился принимать calendarDelegate для пользовательских календарей (например, нестандартная система с 21-дневными месяцами и т. д.).
  • Divider теперь допускает borderRadius, а в showDialog/showAdaptiveDialog/DialogRoute появился параметр animationStyle.

Кроме того, в Material-библиотеке устранены баги с DropdownMenu (ширина теперь подстраивается под текст) и наложением треков у RangeSlider/Slider.

Доступность

  • Семантический дерев компилируется на 80 % быстрее, что на вебе даёт 30% выигрыш по времени кадра при включённой семантике.
  • Появился API SemanticsRole — можно обернуть целое дерево виджетов с нужными семантическими ролями для экранных читалок.
  • Улучшено распознавание ссылок в Android TalkBack, гладче навигация фокуса на вебе, поддержка Windows high-contrast («forced colors») и оптимизация iOS Voice Control.

Ввод текста

  • В iOS внедрен системный контекстный набор действий для выделенного текста.
  • Улучшена производительность Autocomplete с помощью OverlayPortal.
  • Появился колбэк onTapUpOutside у текстовых полей.
  • FormField теперь позволяет выводить произвольный виджет ошибки.
  • Селектируемый текст стал надёжнее и быстрее, особенно на вебе.

Мультиоконная поддержка

Пакет Canonical реализовал базовую мультиоконность для десктоп-приложений:

  1. Доступность, жизненный цикл, фокус, клавиатурные и мышиные события теперь работают независимо в каждом окне.
  2. Добавлена возможность FFI-общения Flutter-движка с Dart-кодом для будущих windowing API.
  3. На Linux зарефакторена raster-нить — плавность и отзывчивость остались на высоте даже при десятках окон.

Объединение нити UI и платформы

На Windows и macOS можно мерджить UI-поток с нативным, что открывает прямой доступ к Win32- или Cocoa-API через Dart FFI (например, изменение размеров окна). Включается флагом project.set_ui_thread_policy(UIThreadPolicy::RunOnPlatformThread) в windows/runner/main.cpp или ключом FLTEnableMergedPlatformUIThread в Info.plist.

iOS и Android

  • iOS: для простых текстовых полей диалог подтверждения вставки больше не появляется.
  • Android: Gradle-плагин переписан с Groovy на Kotlin — читайте unit-тесты и стабильность сборки растёт.
  • Поддержка рукописного ввода стилусом (Android 14+) теперь аналогична Apple Pencil: пишите прямо в поле, и текст отобразится автоматически.

Движок (Engine)

  • Impeller по умолчанию отключается только на Android 9 и ниже (API < 29) — на новых устройствах остаётся задействованным.
  • Некоторые эмуляторы и GPU с неполным Vulkan 1.3 теперь используют OpenGLES, что повышает стабильность.
  • Текстовые анимации в Impeller стали плавнее за счёт более точных глифов и устранения ошибок округления.
  • Убраны избыточные биндинги при блюре, оптимизирована частичная перерисовка и прямое тесселирование конических кривых.

DevTools и IDE

  • Property Editor: новая боковая панель в VS Code и окно в Android Studio/IntelliJ для редактирования свойств виджетов и чтения документации.
  • DevTools: офлайн-режим для Network, билд-фиксы инспектора, Deep Links, CPU Profiler, Memory и общая оптимизация памяти и скорости загрузки.
  • Анализатор Dart: введены «doc imports» для ссылок в документации без фактического импорта, улучшены quick-fix, assists и рефакторинги.
  • Gemini в Android Studio теперь «говорит» на Dart и Flutter: подключайте ИИ-ассистента прямо в IDE.
  • В разработке — поддержка Model Context Protocol (MCP) для точной семантики и мощных возможностей автогенерации кода.

Build with AI

  • Firebase AI Logic объединяет Vertex AI и Gemini API в одном Flutter-SDK firebase_ai, давая доступ к генеративному ИИ прямо на клиенте без серверных обвязок.
  • AI Monitoring в консоли Firebase предоставляет дашборд для детального мониторинга использования Gemini-API: запросы, задержки, ошибки и рекомендации по оптимизации.

Ломание API и устаревания

  • Android-аннонсы через AnnounceSemanticsEvent (API 36) устарели: теперь используется SemanticProperties.liveRegion.
  • Перестали поддерживать шесть пакетов (flutter_markdown, ios_platform_images, css_colors, palette_generator, flutter_image, flutter_adaptive_scaffold) — ищите альтернативы в обсуждениях.
  • В следующем стабильном релизе Flutter прекратит поддержку iOS 12 и macOS 10.14.
  • Депрекейтнут ExpansionTileController в пользу ExpansibleController.
  • Переименован SelectionChangedCause.scribble в stylusHandwriting.
  • В ThemeData списано избыточное свойство indicatorColor, всё переносится в TabBarThemeData.
  • Скорректированы параметры SpringDescription для правдоподобной физики — читайте гайд по миграции.

Для автоматического применения части изменений запустите dart fix после обновления SDK.

Заключение

Flutter 3.32 — очередной шаг к идеалу: горячая-веб перезагрузка, новые компоненты, нативная глубина и мощь ИИ. Чтобы опробовать всё на практике, просто выполните:

И погружайтесь в мир возможностей последнего релиза!

***

✨ А что думаете вы? ✨

Делитесь мыслями в комментариях — ваше мнение вдохновляет нас и других!

Следите за новыми идеями и присоединяйтесь:

Наш сайт — всё самое важное в одном месте

Дзен — свежие статьи каждый день

Телеграм — быстрые обновления и анонсы

ВКонтакте — будьте в центре обсуждений

Одноклассники — делитесь с близкими


Ваш отклик помогает нам создавать больше полезного контента. Спасибо, что вы с нами — давайте расти вместе! 🙌

Оставьте комментарий