Что такое Skia и как она используется в Flutter?

«Что такое Skia и как она используется в Flutter?» — вопрос из категории Рендеринг и производительность, который задают на 44% собеседований Flutter Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Skia — это высокопроизводительная кроссплатформенная 2D-графическая библиотека с открытым исходным кодом, разработанная Google. Flutter использует Skia в качестве движка для рендеринга всего пользовательского интерфейса.

Роль Skia во Flutter:

  1. Отрисовка: Каждый виджет Flutter в конечном итоге преобразуется в набор графических примитивов (рисунков, текста, теней), которые отрисовываются с помощью Skia.
  2. Аппаратное ускорение: Skia использует GPU (через OpenGL, Vulkan, Metal или DirectX) для быстрой отрисовки, что обеспечивает плавную анимацию в 60/120 FPS.
  3. Кроссплатформенность: Поскольку Flutter сам рисует UI, а не использует нативные компоненты, Skia позволяет иметь идентичный внешний вид и поведение на iOS, Android, Web и Desktop.

Прямая работа с Skia во Flutter: Вы можете использовать низкоуровневый API рисования через класс CustomPainter:

class MyCirclePainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    // Canvas предоставляется движком Skia
    final paint = Paint()
      ..color = Colors.blue
      ..style = PaintingStyle.fill;
    // Рисуем круг, используя примитивы Skia
    canvas.drawCircle(Offset(size.width / 2, size.height / 2), 50.0, paint);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}

// Использование в UI
CustomPaint(
  size: const Size(200, 200),
  painter: MyCirclePainter(),
)

Благодаря Skia, Flutter обеспечивает полный контроль над пикселями на экране и высокую производительность графики.