Ответ
Хотя Skia является движком рендеринга по умолчанию, основная альтернатива, разрабатываемая самой командой Flutter, — это Impeller. Я слежу за его развитием и уже тестировал на iOS.
1. Impeller Impeller — это новый движок рендеринга, написанный специально для Flutter. Его ключевая цель — устранить шейдерные лаги (shader compilation jank), которые были главной проблемой Skia на мобильных GPU.
- Как это работает: Вместо компиляции шейдеров во время выполнения (как Skia), Impeller использует заранее скомпилированные (AOT) шейдеры и более предсказуемый конвейер рендеринга.
- Текущий статус:
- iOS: Стабильно включен по умолчанию начиная с Flutter 3.16. На практике это дает заметно более плавную анимацию, особенно при первом запуске сложных анимаций.
- Android: В активной разработке, доступен для preview. Включить его можно через
flutter run --enable-impellerили настройку вandroid/app/src/main/AndroidManifest.xml:<meta-data android:name="io.flutter.embedding.android.EnableImpeller" android:value="true" />
2. CanvasKit (для Web) Для платформы Web у Flutter есть два режима рендеринга:
- HTML: Рендерит виджеты в DOM (быстрее загружается, но менее точный рендеринг).
- CanvasKit: Использует WebAssembly-порт Skia для рендеринга на
<canvas>. Это дает пиксельное соответствие мобильным и десктопным версиям, но размер бандла больше. Выбирается при сборке:flutter build web --web-renderer canvaskit
Мой выбор: Для новых проектов на iOS я уже полагаюсь на Impeller. Для Android пока жду его стабилизации, но для проектов, где критически важна плавность первых анимаций, тестирую его в preview-режиме. На Web для сложных UI с кастомной графикой выбираю CanvasKit, а для контент-ориентированных сайтов — HTML-рендерер.