Solución:
El código fuente de Dart se compila en código nativo utilizando la función de compilación AoT de Dart. Sin embargo, todavía necesita partes de Dart VM (algunos componentes de tiempo de ejecución como la recolección de basura) para ejecutarse, pero el código se compila en código nativo antes de tiempo, porque iOS no permite la compilación dinámica.
Flutter también puede llamar a Android y usar las funciones de Android solo disponibles en Java (lo mismo con iOS). Flutter admite la creación de complementos personalizados (además de muchos de los proporcionados) para llamar al código de la plataforma nativa.
El término Aleteo se refiere a dos cosas / conceptos principales
- SDK de Flutter
- Marco Flutter
1.Flutter SDK: es una colección de herramientas que le permite crear cualquier tipo de aplicación para plataformas Android e iOS en una base de código.
2.Marco Flutter: Básicamente, proporciona todos los widgets / biblioteca de widgets, funciones y paquetes de utilidades predefinidos.
Sabemos que flutter usa Dart como lenguaje de programación. Y las aplicaciones creadas / desarrolladas por flutter se pueden ejecutar en Android e iOS. Y para eso, necesitamos compilar el código de dart en el código nativo de Android / iOS de la máquina.
Y la tarea de compilación la realiza Flutter SDK.
Al hablar de compilación, hay dos tipos de operación / compilación
- Compilación estática
- Interpretación dinámica
Compilación estática: Todos los programas compilados estáticamente se traducen a código de máquina antes de su ejecución. Ej .: AOT (adelantado a tiempo) – C / C ++.
Interpretación dinámica: se ejecuta mediante traducción uno a uno. Ejemplo: JIT (Just in Time) – Javascript / Python.
Ahora sabemos cómo el código de dardos se convierte en código de máquina y dos tipos de compilación.
Pero, ¿cómo se relacionan estos dos tipos de compilación con Flutter?
Para saber eso, necesitamos saber un par de cosas. Flutter no utiliza ningún tipo de vista web ni controles nativos del sistema operativo. En su lugar, flutter utiliza su propio motor de renderizado de alto rendimiento (Skia) para dibujar widgets.
Y el alto rendimiento está garantizado principalmente por dos puntos.
- Lenguaje de dardos
- Motor propio para renderizar / dibujar widgets
Ahora finalmente estamos en el punto. Antes de hablar sobre el proceso de compilación del lenguaje dart, debo mencionar que JIT y AOT se refieren a la forma en que se ejecuta el programa, y el lenguaje de programación no está fuertemente relacionado. Y algunos lenguajes admiten JIT y AOT juntos, por ejemplo, Java, Python.
first time - Compiled -> intermediate byte code
later -> byte code will be directly executed
El tiempo de ejecución y el compilador de DART también admiten una combinación de dos funciones clave: JIT y AOT.
??? SI ESTÁ INTERESADO EN SABER SOBRE LA ESTRUCTURA DEL MARCO FLUTTER ???
Las dos capas inferiores (Fundación y Animación, Pintura, Gestos) se fusionan en una capa de interfaz de usuario de dardo, dart:ui
.
La capa de renderizado es responsable de construir el árbol de la interfaz de usuario y, si ocurre algún cambio, compare y actualice el árbol de widgets. Y finalmente dibuja en la pantalla del dispositivo (algo similar a React Virtual DOM).
La capa de widgets son las bibliotecas de componentes básicos que proporciona flutter.
Y la parte superior (Material, Cupertino) es una biblioteca de componentes proporcionada por flutter. Y aquí es donde / con lo que nos enfrentamos los desarrolladores la mayor parte del tiempo.
Creo que ahora esto está claro para todos. ¡Feliz codificación!
Fuente: book.flutterchina.club, flutter.dev, curso flutter de maximilian schwarzmüller, canal oficial de YouTube de Flutter.
Déjame explicarte con la ayuda de este diagrama:
Flutter está construido usando el lenguaje de programación Dart. Flutter tiene 2 componentes principales:
- Flutter Framework.
- Flutter SDK.
Flutter Framework usa Dart como lenguaje de programación y Framework tiene un conjunto de funciones de utilidad a través de las cuales puede agregar elementos de interfaz de usuario y widgets en su aplicación Flutter.
Y Flutter SDK le permite crear, implementar y personalizar sus aplicaciones Flutter.
Flutter usa Dart
Porque Dart es un lenguaje de programación orientado a objetos fuertemente tipado. Y tiene características de compilación Ahead of time y Just in Time Compilation.
La compilación anticipada hace que Flutter SDK y Dart sean elegibles para generar código ARM nativo que se puede compilar en Android e iOS.
Para obtener más detalles, puede ver este video: Cómo funciona Flutter y por qué Flutter usa Dart