Flutter 3.27 — важное обновление фреймворка в конце 2024 года. Команда Google сделала акцент на производительности и веб-разработке. Рассмотрим ключевые изменения.
Impeller renderer по умолчанию
Самое важное изменение — Impeller теперь включён по умолчанию для iOS и macOS.
Что это значит?
Impeller — это новый рендер-движок, который заменяет Skia. Он решает проблему джанков (микро-лагов) при анимации.
Раньше Skia компилировала шейдеры во время первой анимации, что вызывало пропуски кадров. Impeller использует предкомпилированные шейдеры и работает напрямую через GPU (Metal, Vulkan, OpenGL).
Результат: стабильные 60 FPS даже на средних устройствах.
WebAssembly поддержка
Flutter 3.27 делает большой шаг в направлении WebAssembly. Ветка wasmGC теперь merged в main.
Что это даёт?
Раньше Flutter Web компилировался в JavaScript: — Медленная загрузка (~2-5 MB) — Долгий запуск
С WebAssembly: — Быстрая загрузка (~500 KB) — Мгновенный запуск — Производительность близка к нативной
Как включить:
flutter build web --wasm
flutter run -d chrome --wasm
Новые виджеты
SelectionArea — улучшенная работа с выделением текста:
SelectionArea(
child: Column(
children: [
Text('Строка 1'),
Text('Строка 2'),
Text('Строка 3'),
],
),
)
Теперь можно выделить любой текст внутри контейнера, не оборачивая каждый в SelectableText.
Material 3 — полная поддержка Material Design 3:
MaterialApp(
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue,
),
),
home: MyApp(),
)
Улучшения производительности
Оптимизация ListView
ListView.builder теперь автоматически кеширует виджеты. Это значит на 30% меньше памяти для больших списков.
Lazy Image
Изображения загружаются более эффективно:
Image.network(
'https://example.com/image.jpg',
gaplessPlayback: false,
loadingBuilder: (context, child, loadingProgress) {
if (loadingProgress == null) return child;
return CircularProgressIndicator();
},
)
Улучшенный GC
Потребление памяти снижено на 20% для типичных приложений.
Улучшения в инструментах
DevTools 2.30
- New Performance Page — детальный профайлинг
- Network Profiler — отслеживание запросов
- Memory Profiler — поиск утечек памяти
- Enhanced Logging — фильтрация логов
Flutter Fix
Автоматическое исправление устаревшего API:
flutter fix --apply
Breaking Changes
Удалены deprecated виджеты:
// ❌ Больше не работает
RaisedButton(...)
FlatButton(...)
OutlineButton(...)
#### ✅ Используйте
ElevatedButton(...)
TextButton(...)
OutlinedButton(...)
Миграция на Flutter 3.27
Шаг 1: Обновите pubspec.yaml
environment:
sdk: '>=3.4.0 <4.0.0'
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.8
Шаг 2: Обновите зависимости
flutter pub get
flutter pub upgrade --major-versions
Шаг 3: Примените исправления
flutter fix --apply
Шаг 4: Протестируйте
flutter test
Советы по обновлению
1. Проверьте совместимость пакетов
Некоторые сторонние пакеты могут быть несовместимы. Проверьте pub.dev для обновлений.
2. Тестируйте на старых устройствах
Особенно iOS 12+ для Impeller.
3. Проверьте кастомные шейдеры
Если используете кастомные шейдеры, они могут потребовать адаптации.
Заключение
Flutter 3.27 — важный этап развития фреймворка:
- Impeller по умолчанию = плавные анимации
- WebAssembly = быстрые веб-приложения
- Новые виджеты = лучший UX
- Оптимизации = выше производительность
Когда обновляться?
- Новые проекты — сразу используйте 3.27
- Существующие проекты — планируйте миграцию в 2025 году
- Критические проекты — тестируйте тщательно
Риски:
- Некоторые сторонние пакеты могут быть несовместимы
- WebAssembly ещё experimental
- Требуется Android NDK 25+
Обновляйтесь постепенно. Начните с нового проекта, протестируйте, затем мигрируйте существующие приложения.