Крайне важная штука в релизе. FFIgen для Objective-C и JNIgen для Java/Kotlin вышли из экспериментального статуса. Теперь нативные API можно вызывать прямо из Dart: без MethodChannel, без сериализации и без обязательного async. Вызовы бывают синхронными и работают даже из фоновых изолятов. Pigeon получил в превью режим нативного интеропа, который под капотом генерирует типобезопасные биндинги через FFIgen и JNIgen. Кто писал плагины на каналах, тот поймёт, почему я этому рад.
Matej Knopp переделал планирование кадра после тача. Событие сразу уходит во фреймворк, и кадр собирается в тот же цикл обновления экрана. Задержка падает на 16 мс при 60 Гц и на 8 мс при 120 Гц ProMotion. Проверяли на устройствах вплоть до iPhone 6s. Команда обещает, что дальше будет ещё лучше. Сам не проверял, но, наверно, штука хорошая)
В Safari 26.2+ и Firefox 147+ сборка на WebAssembly на тяжёлых бенчмарках выдаёт в два с лишним раза больше FPS, чем JS. Пока это включается вручную через
wasmAllowList в flutter_bootstrap.js, а режимом по умолчанию станет в следующих релизах.• Флаг
--web-content-hash добавляет хеши в имена файлов, и после деплоя пользователи больше не застревают на старой версии из кэша;• Экспериментальный WebParagraph отдаёт вёрстку текста браузеру. CanvasKit худеет с 5,46 до примерно 3,75 МБ, эмодзи становятся цветными, квадратики вместо символов пропадают.
Новый или только что обновлённый айфон больше не висит на белом экране, пока не откроешь Xcode: CLI сам готовит устройство. На реальные устройства вернулся
flutter screenshot, которого не было с iOS 17.Material и Cupertino переезжают в отдельные пакеты, это то, что заставит нас начать работы по обновлению книги Flutter Основы)),
material.dart и cupertino.dart из SDK официально помечены deprecated. Новые проекты сразу создаются на material_ui. Для миграции хватит одной команды:dart fix --apply --code=migrate_design_widgetsНа Android тоже есть изменения:
• Release-сборки больше не принимают
route, dart_entrypoint и флаги движка из чужих Intent. Уязвимость закрыли, диплинки при этом работают как раньше.• Hybrid Composition++ для платформенных view (карты, вебвью) стал ещё плавнее, но требует Android 14+ и Impeller на Vulkan, включается командой
flutter config --enable-hcpp.• Новые проекты создаются с AGP 9.3.1, Gradle 9.5.0, Java 17 и minSdk 24.
Ну и как без ИИ, Genkit Dart дорос до версии 1.0. Пакет MediaPipe принёс 20 задач, которые выполняются прямо на устройстве: зрение, аудио, текст. Больше всего меня порадовало другое: авторы пакетов теперь могут класть agent skills в сам пакет на pub.dev, в папку
skills/. Ставятся они командой dart run skills@get.Ну и по мелочи:
-
itemExtentBuilder добавлен в ListView.separated-
barrierBuilder в showDialog - можно делать размытый фон-
AutofillHints.emailOTPCode - цифровая клавиатура для PIN на Android-
SliverClipRRect - который не обрезает закреплённые заголовки.https://www.youtube.com/watch?v=K5Kk-C3IL94
https://flutter.dev/blog/whats-new-in-flutter-3-50