Sobes.tech
Middle

In welke architectuurlagen is Flutter onderverdeeld?

sobes.tech AI

Antwoord van AI

Flutter is onderverdeeld in de volgende architecturale lagen:

  1. Embedder: Verantwoordelijk voor interactie met het besturingssysteem. Biedt platform-specifieke invoer voor het renderen van oppervlakken, toegang tot toegankelijkheidsdiensten, gebruikersinvoer en levenscyclusbeheer. De Embedder is geschreven in een taal die geschikt is voor het specifieke platform (Java voor Android, Objective-C/Swift voor iOS, C++ voor Windows/Linux/macOS).
  2. Engine: Kern van het framework. Grotendeels geïmplementeerd in C/C++. Biedt low-level functionaliteit: Skia (2D grafische bibliotheek), Text (bibliotheek voor werken met tekst), IO (invoer/uitvoer), Dart Runtime, Flutter Engine (taakplanning, renderingbeheer, compositie).
  3. Framework: Geschreven in Dart. Dit is de Dart API waarmee Flutter-ontwikkelaars direct werken. Bestaat uit meerdere niveaus:
    • Foundation: Basis klassen en hulpprogramma's.
    • Widgets: De basis van de UI in Flutter. Widgets beschrijven de configuratie van interface-elementen.
    • Rendering: Abstracties voor rendering, die objecten op laag niveau bieden voor het bouwen van renderbomen.
    • Painting, Gestures, Animation, etc.: Niveaus die functionaliteit bieden voor tekenen, gebarenafhandeling, animaties, enz.
    • Material/Cupertino Libraries: Verzamelingen widgets die ontwerp-systemen Material Design en iOS Cupertino implementeren.

Hier is een vereenvoudigde weergave van de hiërarchie:

[Uw applicatiecode (Dart Widgets)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Besturingssysteem]

De Embedder start de Engine, die Dart Runtime en API biedt. Het Framework, geschreven in Dart, communiceert met de Engine via de Dart API. Uw applicatiecode gebruikt de widgets van het Framework om de gebruikersinterface te bouwen. De Engine gebruikt op haar beurt Skia om elementen te renderen op de Canvas, dat wordt geleverd door de Embedder.