Добавить объявление

Релиз Flutter 3.47: главные изменения для разработчиков

Вышла новая версия Flutter 3.47. Обновление заметное. Material и Cupertino наконец-то выехали из SDK в отдельные пакеты. Impeller стал рендерером по умолчанию на десктопе. Плюс подготовка к осенним обновлениям Apple и другие улучшения. Давайте разберем все основные изменения.

Material и Cupertino теперь отдельные пакеты:


Главное изменение: Material и Cupertino больше не встроены в SDK. Теперь это отдельные пакеты на pub.dev: material_ui и cupertino_ui. Это значит, что обновления виджетов теперь могут выходить независимо от релизов Flutter.

Пока это опционально. Старые импорты из package:flutter/material.dart все еще работают, но они объявлены устаревшими и будут удалены в ноябре.

Для миграции достаточно выполнить команду:


dart fix --apply --code=migrate_design_widgets

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


flutter pub add material_ui
flutter pub add cupertino_ui

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

Также вместе с UI-пакетами разобрали flutter_localizations. Теперь делегаты локализации живут внутри material_ui и cupertino_ui, а не в отдельном пакете.

Подготовка к iOS 27 и macOS 27:


Apple осенью выпустит Xcode 27 с новыми требованиями. Минимальная версия iOS поднята до 15, macOS до 12. iOS 27 SDK требует жизненного цикла UIScene. Приложения без него не запустятся на новых устройствах.

Для большинства проектов CLI мигрирует автоматически. Но если в проекте есть кастомный AppDelegate, придется править руками. Лучше проверить сейчас.

Также Flutter постепенно сворачивает поддержку Intel Mac. В этой версии только предупреждения, но в будущем сборка на Intel перестанет работать. Можно уже сейчас переключиться на ARM64-only:


flutter config --enable-macos-arm64-only

По Swift Package Manager прогресс: 92 из топ-100 плагинов уже перешли на SPM. Если вы еще не включили SPM, можно попробовать:


flutter config --enable-swift-package-manager

Impeller теперь на десктопе по умолчанию:


Impeller стал рендерером по умолчанию на macOS, Windows и Linux. Если вы не знаете, что это - новый рендеринг-движок, который компилирует шейдеры на этапе сборки, а не в рантайме. Это решает проблему шейдерных джанков. Первая анимация работает так же плавно, как и все последующие.

На macOS также включили Wide Gamut Color - более насыщенные и точные цвета.

Отключить Impeller можно, но в будущих версиях опция будет удалена.

Flavors для десктопа:


Flavors, которые работали на мобилках, теперь доступны и на Windows и Linux. Можно использовать разные ассеты и настройки для разных окружений.


flutter build windows --flavor production
flutter build linux --flavor staging

Экспериментальный многооконный режим тоже доработали. На Windows и Linux появились popup-окна. Можно делать контекстные меню и палитры.

Widget Previews вышли в stable:


Виджет-превью стали стабильными. Теперь можно рендерить отдельные компоненты без сборки всего приложения. Кэш сохраняется в .widget_preview/, так что повторные запуски быстрее. Есть поддержка нескольких тем для тестирования и синхронизация веб-ассетов.

Вывод:


Flutter 3.47 - важное обновление. Главное - Material и Cupertino выехали из SDK. Это упростит обновления виджетов и снизит зависимость от релизов Flutter.

Impeller на десктопе - большой шаг для производительности. Flavors и многооконный режим делают десктоп-разработку более гибкой. А подготовка к осеннему релизу Apple заставляет проверить проекты на совместимость.
14.08.2026 50 619