Middle
На какви архитектурни слоеве се дели Flutter?
sobes.tech AI
Отговор от AI
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. Widget-ите описват конфигурацията на елементите на интерфейса.
- Rendering: Абстракции за рендиране, които предоставят обекти от ниско ниво за изграждане на дървета за рендиране.
- Painting, Gestures, Animation и др.: Нива, които предоставят функционалност за рисуване, обработка на жестове, анимации и др.
- Material/Cupertino Libraries: Колекции от widget-и, реализиращи системите за дизайн Material Design и iOS Cupertino.
Ето опростено представяне на йерархията:
[Вашият код за приложение (Dart Widgets)]
|
[Framework (Dart)]
|
[Engine (C/C++)]
/ \
[Embedder] [Skia]
| |
[Операционна система]
Embedder стартира Engine, който предоставя Dart Runtime и API. Framework-ът, написан на Dart, взаимодейства с Engine чрез Dart API. Вашият код за приложение използва widget-ите на Framework-а за изграждане на потребителския интерфейс. Engine-ът от своя страна използва Skia за рендиране на елементи върху Canvas, предоставен от Embedder-а.