Sobes.tech
Middle

¿En qué capas arquitectónicas se divide Flutter?

sobes.tech AI

Respuesta de la IA

Flutter se divide en las siguientes capas arquitectónicas:

  1. Embedder: Encargado de interactuar con el sistema operativo. Proporciona una entrada específica de la plataforma para renderizar superficies, acceder a servicios de accesibilidad, entrada de usuario y gestión del ciclo de vida. El Embedder está escrito en un lenguaje adecuado para la plataforma específica (Java para Android, Objective-C/Swift para iOS, C++ para Windows/Linux/macOS).
  2. Engine: Núcleo del framework. Implementado principalmente en C/C++. Proporciona funcionalidades de bajo nivel: Skia (biblioteca gráfica 2D), Text (biblioteca para trabajar con texto), IO (entrada/salida), Dart Runtime, Flutter Engine (planificación de tareas, gestión del renderizado, composición).
  3. Framework: Escrito en Dart. Es la API de Dart con la que los desarrolladores de Flutter interactúan directamente. Consta de varios niveles:
    • Foundation: Clases básicas y utilidades.
    • Widgets: La base de la UI en Flutter. Los widgets describen la configuración de los elementos de la interfaz.
    • Rendering: Abstracciones para el renderizado, que proporcionan objetos de bajo nivel para construir árboles de renderizado.
    • Painting, Gestures, Animation, etc.: Niveles que proporcionan funcionalidades para dibujar, manejar gestos, animaciones, etc.
    • Material/Cupertino Libraries: Conjuntos de widgets que implementan los sistemas de diseño Material Design y iOS Cupertino.

Aquí hay una representación simplificada de la jerarquía:

[Tu código de aplicación (Widgets Dart)]
        |
    [Framework (Dart)]
        |
    [Engine (C/C++)]
      /        \
[Embedder]    [Skia]
   |            |
[Sistema Operativo]

El Embedder inicia el Engine, que proporciona Dart Runtime y API. El Framework, escrito en Dart, interactúa con el Engine a través de la API de Dart. Tu código de aplicación usa los widgets del Framework para construir la interfaz de usuario. El Engine, a su vez, usa Skia para renderizar los elementos en el Canvas, proporcionado por el Embedder.