Sobes.tech
Middle

На какви архитектурни слоеве се дели Flutter?

sobes.tech AI

Отговор от AI

Flutter се разделя на следните архитектурни слоеве:

  1. Embedder: Отговаря за взаимодействието с операционната система. Предоставя платформо-специфичен вход за рендиране на повърхности, достъп до услуги за достъпност, въвеждане на потребителя и управление на жизнения цикъл. Embedder е написан на език, подходящ за конкретната платформа (Java за Android, Objective-C/Swift за iOS, C++ за Windows/Linux/macOS).
  2. Engine: Ядрото на рамката. Реализирано е главно на C/C++. Предоставя ниско ниво функционалности: Skia (графична библиотека 2D), Text (библиотека за работа с текст), IO (въвеждане/извеждане), Dart Runtime, Flutter Engine (планиране на задачи, управление на рендеринга, композиция).
  3. 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-а.