Sobes.tech
Middle

Quais as camadas arquitetónicas do Flutter?

sobes.tech IA

Resposta da IA

O Flutter divide-se nas seguintes camadas arquitetónicas:

  1. Embedder: Responsável por interagir com o sistema operativo. Fornece uma entrada específica da plataforma para renderizar superfícies, aceder a serviços de acessibilidade, entrada de utilizador e gestão do ciclo de vida. O Embedder é escrito numa linguagem adequada para a plataforma específica (Java para Android, Objective-C/Swift para iOS, C++ para Windows/Linux/macOS).
  2. Engine: Núcleo do framework. Implementado principalmente em C/C++. Fornece funcionalidades de baixo nível: Skia (biblioteca gráfica 2D), Text (biblioteca para trabalhar com texto), IO (entrada/saída), Dart Runtime, Flutter Engine (planeamento de tarefas, gestão de rendering, composição).
  3. Framework: Escrito em Dart. É a API Dart com a qual os desenvolvedores Flutter interagem diretamente. Consiste em vários níveis:
    • Foundation: Classes básicas e utilitários.
    • Widgets: A base da UI no Flutter. Os widgets descrevem a configuração dos elementos da interface.
    • Rendering: Abstrações para rendering, que fornecem objetos de baixo nível para construir árvores de rendering.
    • Painting, Gestures, Animation, etc.: Níveis que fornecem funcionalidades para desenhar, lidar com gestos, animações, etc.
    • Material/Cupertino Libraries: Conjuntos de widgets que implementam os sistemas de design Material e iOS Cupertino.

Aqui está uma representação simplificada da hierarquia:

[O seu código de aplicação (Widgets Dart)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Sistema Operacional]

O Embedder inicia o Engine, que fornece Dart Runtime e API. O Framework, escrito em Dart, interage com o Engine através da API Dart. O seu código de aplicação usa os widgets do Framework para construir a interface de utilizador. O Engine, por sua vez, usa Skia para renderizar elementos no Canvas, fornecido pelo Embedder.