> For the complete documentation index, see [llms.txt](https://ecm-pmdm-flutter.gitbook.io/1.-introduccion-a-flutter/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ecm-pmdm-flutter.gitbook.io/1.-introduccion-a-flutter/1.-introduccion/caracteristicas-destacables-de-flutter.md).

# Características destacables de Flutter

Flutter transformará el proceso de **desarrollo** y nos permitirá obtener, a partir del **mismo** **código base**, **aplicaciones** **multiplataforma,** **nativas**, **rápidas** y con interfaces de usuario muy **bonitas.**

* Flutter es de **código** **abierto**: puedes ver su evolución, crear tus propios parches, paquetes y contribuir a su desarrollo.&#x20;
* Flutter dispone de una **excelente** **documentación**.
* Flutter **no** **es** un **lenguaje** de **programación**, es un **framework** de Dart.
* Flutter está **escrito** **C**, **C++** y  **Dart.**
* Las **aplicaciones** **Flutter** se programan con **Dart**. Comparte muchas características de otros lenguages modernos como Kotlin y Swift.   Además, Dart **traspila** a **Javascript**. &#x20;
* La **sintaxis** **declarativa** de Flutter para **crear** **interfaces** **de usuario** (utilizando Dart) le permite evitar el código repetitivo (boilerplate code) y ser extremadamente **productivos**.

{% hint style="info" %}
**Paradigmas** que usa Flutter: <https://esflutter.dev/docs/resources/faq#qué-paradigma-de-programación-usa-el-framework-de-flutter>
{% endhint %}

* Durante el **desarrollo** de la aplicación, se permite su **recarga** en **caliente** (**hot** **reload**, compilación JIT):  las actualizaciones en el código se aplican sin tener que volver a cargar el estado o recompilar la aplicación *--> los cambios realizados se observan de forma instantánea en la aplicación en ejecución (sin perder el estado actual).*&#x20;
* La **interfaz** de **usuario** de Flutter es **completamente** **personalizable** (UI customizable).  En Flutter prácticamente todo es un **widget**, incluso la propia aplicación es un widget. (widgets para Google Material Design o iOS Cupertino listos para usar (out of the box). Podremos **crear** nuestros propios **widgets**.
* Flutter proporciona excelentes **animaciones** y transiciones.&#x20;
* Para aquellas **funciones** **específicas** de la plataforma que aún no tienen un paquete de soporte de Flutter: Flutter admite la **interoperabilidad** de **C y C++**, así como canales de plataforma (**platform** **channels**) para interactuar con Kotlin/Java en **Android** y Swift/Objective-C en **iOS**.&#x20;

### Arquitectura de Flutter&#x20;

Flutter está organizado en **capas** de bibliotecas (libraries) **independientes**, lo cual las hace extensibles (y también reemplazables) donde cada capa depende de la capa inferior.

![Arquitectura de Flutter](/files/cOOppTP9TbY44V38yc5c)

* **Framework**: programado únicamente en Dart, contiene las bibliotecas con todas las clases necesarias para widgets, rendering, animaciones, gestos, etc.  Es la capa con la que el **desarrollador** **Flutter** **interactuará** habitualmente.
* **Engine**: Fundamentalmente programado en C/C++.  Proporciona todas las primitivas de bajo nivel para que las aplicaciones Flutter funcionen: **rendering** (**Impeler/Skia**), **Dart** **runtime**,  **channels**, etc.
* **Embedder**:  Todas las aplicaciones Flutter se **empaquetan** igual que otra **aplicación** **nativa**. Hay un embedder específico para cada plataforma.  Flutter incluye embedders para las plataformas más comunes.  Cada embedder se programa con el lenguaje que es adecuado para la plataforma, por ejemplo: Java and C++ para Android, Objective-C/Objective-C++ para iOS y macOS, any C++ for Windows and Linux.

**Anatomia de las aplicaciones Flutter**

<figure><img src="/files/a18UM1EarBVFnzXWGJhb" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
Encontraremos toda la **información oficial** **sobre** la **arquitectura** en el siguiente enlace: <https://docs.flutter.dev/resources/architectural-overview>
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ecm-pmdm-flutter.gitbook.io/1.-introduccion-a-flutter/1.-introduccion/caracteristicas-destacables-de-flutter.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
