Flutter делится на следующие архитектурные слои:
- Embedder: Отвечает за взаимодействие с операционной системой. Предоставляет платформо-специфичный вход для отрисовки поверхности, доступа к службам доступности, вводу пользователя и управлению жизненным циклом. Embedder написан на языке, подходящем для конкретной платформы (Java для Android, Objective-C/Swift для iOS, C++ для Windows/Linux/macOS).
- Engine: Ядро фреймворка. Реализован в основном на C/C++. Предоставляет низкоуровневую функциональность: Skia (графическая библиотека 2D), Text (библиотека для работы с текстом), IO (ввод/вывод), Dart Runtime, Flutter Engine (планирование задач, управление рендерингом, композитинг).
- Framework: Написан на Dart. Это Dart API, с которым Flutter-разработчики взаимодействуют напрямую. Состоит из нескольких уровней:
- Foundation: Базовые классы и утилиты.
- Widgets: Основа UI в Flutter. Виджеты описывают конфигурацию элем