Sobes.tech
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:

  1. 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).
  2. 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ó).
  3. 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.