Sobes.tech
Middle

Na jakie warstwy architektoniczne dzieli się Flutter?

sobes.tech AI

Odpowiedź od AI

Flutter dzieli się na następujące warstwy architektoniczne:

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