Sobes.tech
Middle

In quali strati architettonici si divide Flutter?

sobes.tech AI

Risposta dell'AI

Flutter è suddiviso nei seguenti strati architettonici:

  1. Embedder: Responsabile dell'interazione con il sistema operativo. Fornisce un input specifico della piattaforma per il rendering delle superfici, l'accesso ai servizi di accessibilità, l'input utente e la gestione del ciclo di vita. L'Embedder è scritto in un linguaggio adatto alla piattaforma specifica (Java per Android, Objective-C/Swift per iOS, C++ per Windows/Linux/macOS).
  2. Engine: Nucleo del framework. Implementato principalmente in C/C++. Fornisce funzionalità a basso livello: Skia (biblioteca grafica 2D), Text (biblioteca per lavorare con il testo), IO (input/output), Dart Runtime, Flutter Engine (pianificazione delle attività, gestione del rendering, composizione).
  3. Framework: Scritta in Dart. È l'API Dart con cui gli sviluppatori Flutter interagiscono direttamente. Consiste di diversi livelli:
    • Foundation: Classi di base e utilità.
    • Widgets: La base dell'UI in Flutter. I widget descrivono la configurazione degli elementi dell'interfaccia.
    • Rendering: Astrazioni per il rendering, che forniscono oggetti a basso livello per costruire alberi di rendering.
    • Painting, Gestures, Animation, ecc.: Livelli che forniscono funzionalità per disegnare, gestire gesti, animazioni, ecc.
    • Material/Cupertino Libraries: Collezioni di widget che implementano i sistemi di design Material e iOS Cupertino.

Ecco una rappresentazione semplificata della gerarchia:

[Il tuo codice applicativo (Widgets Dart)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Sistema Operativo]

L'Embedder avvia l'Engine, che fornisce Dart Runtime e API. Il Framework, scritto in Dart, interagisce con l'Engine tramite l'API Dart. Il tuo codice applicativo utilizza i widget del Framework per costruire l'interfaccia utente. L'Engine, a sua volta, utilizza Skia per il rendering degli elementi su Canvas, fornito dall'Embedder.