Ядро Flutter состоит из движка, каркаса и виджетов.
Движок Flutter: Написан на C++ и предоставляет низкоуровневый API для рендеринга, работы с текстом, потоками и плагинами. Он взаимодействует непосредственно с платформой (iOS, Android, Web, Desktop) и графическими API (например, Skia). Движок управляет отрисовкой, асинхронными операциями и жизненным циклом приложения.
Каркас Flutter (Framework): Написан на Dart и предоставляет слой абстракции над движком. Он включает в себя множество готовых компонентов:
Виджеты: В Flutter всё является виджетом. Виджеты описывают конфигурацию UI. Существуют два основных типа:
properties).State, в котором хранится состояние и логика построения UI (build метод).Процесс рендеринга:
build() виджета, который возвращает дерево других виджетов.Element Tree), которое представляет структуру UI. Элементы связывают виджеты с соответствующими объектами рендеринга.Render Object Tree). Объекты рендеринга отвечают за макет, покраску и hit testing.Reactive Programming:
Flutter использует реактивный подход к построению UI. При изменении состояния приложения фреймворк перестраивает ту часть дерева виджетов, которая зависит от этого состояния. Это происходит автоматически и эффективно благодаря механизму diffing и быстрому созданию и уничтожению виджетов.
Горячая перезагрузка (Hot Reload) и Горячий перезапуск (Hot Restart):
initState или глобальных переменных.Платформо-специфичный код:
Flutter позволяет взаимодействовать с нативными API платформы через платформенные каналы (Platform Channels). Это позволяет вызывать методы нативного кода (Java/Kotlin на Android, Swift/Objective-C на iOS) и получать результаты обратно в Dart.
dart