Middle
Milyen architektúrális rétegekre oszlik a Flutter?
sobes.tech MI
Válasz az MI-től
A Flutter a következő architekturális rétegekre oszlik:
- Embedder: A rendszerrel való interakcióért felelős. Platform-specifikus bemenetet biztosít a felületek rendereléséhez, hozzáférést az akadálymentességi szolgáltatásokhoz, felhasználói bemenethez és az életciklus kezeléséhez. Az Embedder a platformnak megfelelő nyelven íródott (Java Androidhoz, Objective-C/Swift iOS-hez, C++ Windows/Linux/macOS-hez).
- Engine: A keretrendszer magja. Főként C/C++-ban implementált. Alacsony szintű funkciókat nyújt: Skia (2D grafikus könyvtár), Text (szövegkezelő könyvtár), IO (bemenet/kimenet), Dart Runtime, Flutter Engine (feladatütemezés, renderelés kezelése, kompozíció).
- Framework: Dart nyelven íródott. Ez a Dart API, amellyel a Flutter fejlesztők közvetlenül dolgoznak. Több szintből áll:
- Foundation: Alapvető osztályok és segédprogramok.
- Widgets: A Flutter UI alapja. A widgetek az interfész elemeinek konfigurációját írják le.
- Rendering: Absztrakciók a rendereléshez, amelyek alacsony szintű objektumokat biztosítanak a renderfák építéséhez.
- Painting, Gestures, Animation, stb.: Szintek, amelyek a rajzolás, gesztuskezelés, animációk stb. funkcióit biztosítják.
- Material/Cupertino Libraries: Widget gyűjtemények, amelyek a Material Design és az iOS Cupertino rendszerét valósítják meg.
Íme egy leegyszerűsített hierarchia ábrázolása:
[Az alkalmazás kódja (Dart Widgetek)]
|
[Framework (Dart)]
|
[Engine (C/C++)]
/ \
[Embedder] [Skia]
| |
[Operációs rendszer]
Az Embedder elindítja az Engine-t, amely Dart Runtime és API-t biztosít. A Dartban írt Framework az API-n keresztül kommunikál az Engine-nel. Az alkalmazás kódja a Framework widgetjeit használja a felhasználói felület felépítéséhez. Az Engine pedig a Skia-t használja az elemek rendereléséhez a Canvas-on, amit az Embedder biztosít.