Sobes.tech
Middle

Din ce straturi arhitecturale este împărțit Flutter?

sobes.tech AI

Răspuns de la AI

Flutter este împărțit în următoarele straturi arhitecturale:

  1. Embedder: Responsabil pentru interacțiunea cu sistemul de operare. Oferă o intrare specifică platformei pentru redarea suprafețelor, accesul la serviciile de accesibilitate, intrarea utilizatorului și gestionarea ciclului de viață. Embedder este scris într-un limbaj potrivit pentru platforma specifică (Java pentru Android, Objective-C/Swift pentru iOS, C++ pentru Windows/Linux/macOS).
  2. Engine: Nucleul framework-ului. Implementat în principal în C/C++. Oferă funcționalități de nivel scăzut: Skia (bibliotecă grafică 2D), Text (bibliotecă pentru lucrul cu textul), IO (intrare/ieșire), Dart Runtime, Flutter Engine (planificarea sarcinilor, gestionarea randării, compoziție).
  3. Framework: Scris în Dart. Este API-ul Dart cu care dezvoltatorii Flutter interacționează direct. Constă din mai multe niveluri:
    • Foundation: Clase de bază și utilitare.
    • Widgets: Baza UI în Flutter. Widget-urile descriu configurația elementelor interfeței.
    • Rendering: Abstracții pentru randare, care oferă obiecte de nivel scăzut pentru construirea arborilor de randare.
    • Painting, Gestures, Animation, etc.: Niveluri care oferă funcționalități pentru desen, gestionarea gesturilor, animații etc.
    • Material/Cupertino Libraries: Colecții de widget-uri care implementează sistemele de design Material și iOS Cupertino.

Iată o reprezentare simplificată a ierarhiei:

[Codul tău de aplicație (Widgets Dart)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Sistemul de operare]

Embedder pornește Engine-ul, care oferă Dart Runtime și API. Framework-ul, scris în Dart, interacționează cu Engine-ul prin API-ul Dart. Codul tău de aplicație folosește widget-urile Framework-ului pentru a construi interfața utilizatorului. Engine-ul, la rândul său, folosește Skia pentru a reda elemente pe Canvas, furnizat de Embedder.