Middle
Na jakie warstwy architektoniczne dzieli się Flutter?
sobes.tech AI
Odpowiedź od AI
Flutter dzieli się na następujące warstwy architektoniczne:
- Embedder: Odpowiada za interakcję z systemem operacyjnym. Zapewnia platformowo-specyficzne wejście do renderowania powierzchni, dostępu do usług dostępności, wejścia użytkownika i zarządzania cyklem życia. Embedder jest napisany w języku odpowiednim dla danej platformy (Java dla Androida, Objective-C/Swift dla iOS, C++ dla Windows/Linux/macOS).
- Engine: Rdzeń frameworka. Implementowany głównie w C/C++. Zapewnia funkcje niskiego poziomu: Skia (biblioteka graficzna 2D), Text (biblioteka do pracy z tekstem), IO (wejście/wyjście), Dart Runtime, Flutter Engine (planowanie zadań, zarządzanie renderowaniem, kompozycja).
- Framework: Napisany w Dart. To API Dart, z którym bezpośrednio współpracują deweloperzy Flutter. Składa się z kilku poziomów:
- Foundation: Podstawowe klasy i narzędzia.
- Widgets: Podstawa UI w Flutter. Widgety opisują konfigurację elementów interfejsu.
- Rendering: Abstrakcje do renderowania, zapewniające obiekty niskiego poziomu do budowania drzew renderowania.
- Painting, Gestures, Animation, itp.: Poziomy zapewniające funkcjonalność do rysowania, obsługi gestów, animacji itp.
- Material/Cupertino Libraries: Zbiory widgetów implementujących systemy projektowe Material Design i iOS Cupertino.
Oto uproszczona reprezentacja hierarchii:
[Twój kod aplikacji (Widgets Dart)]
|
[Framework (Dart)]
|
[Engine (C/C++)]
/ \
[Embedder] [Skia]
| |
[System operacyjny]
Embedder uruchamia Engine, który zapewnia Dart Runtime i API. Framework, napisany w Dart, współpracuje z Engine przez API Dart. Twój kod aplikacji używa widgetów Framework do budowania interfejsu użytkownika. Engine z kolei używa Skia do renderowania elementów na Canvas, które jest dostarczane przez Embedder.