Рубрики
Flutter

Flutter 3.27: Что нового в 2025 году

Обзор обновления Flutter 3.27: новый рендерер Impeller, поддержка WebAssembly, улучшения производительности и новые возможности для разработчиков.

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+

Обновляйтесь постепенно. Начните с нового проекта, протестируйте, затем мигрируйте существующие приложения.