Dart es un lenguaje accesible, portátil y de alto rendimiento diseñado para el desarrollo de apps full-stack. Ofrece null safety sólido, un sistema de tipos fuerte y se compila a código máquina nativo para móvil, escritorio y backend, así como a JavaScript o WebAssembly para la web. Aunque Dart es la base de Flutter, también se utiliza para construir herramientas de línea de comandos, servidores y otras aplicaciones.
Glosario
Una referencia de glosario para la terminología utilizada en docs.flutter.dev.
A continuación se presentan las definiciones de los términos utilizados en la documentación de Flutter.
Adaptive
El diseño adaptativo busca que la interfaz de usuario sea utilizable en el espacio, a diferencia del diseño responsivo, que busca ajustar la interfaz de usuario dentro del espacio. Una app adaptativa selecciona la disposición adecuada (como tener una barra de navegación inferior en lugar de un panel lateral) y los dispositivos de entrada (por ejemplo, ratón en lugar de táctil) para sentirse natural en el dispositivo actual.
Documentos y recursos relacionados
Agent skill
Un agent skill es un conjunto especializado de instrucciones, scripts y recursos que extienden las capacidades de un agente de IA para un dominio o tarea específica. Los skills permiten a los agentes interactuar con el entorno, ejecutar flujos de trabajo de múltiples pasos y realizar la resolución de problemas complejos de forma autónoma.
Cupertino
La librería cupertino de Flutter implementa el lenguaje de diseño de iOS,
que abarca un conjunto de Widgets que implementan las Human Interface Guidelines de Apple.
La librería cupertino, originalmente parte del repo principal de Flutter,
se desacoplará en un paquete independiente.
Para obtener más información,
visita flutter.dev/go/decouple-design.
Documentos y recursos relacionados
Declarativo
La programación declarativa es un estilo en el que describes el State actual de tu interfaz de usuario, y el framework se encarga de realizar la transición de la interfaz de usuario para que coincida con ese State.
En Flutter, los Widgets son "planos" inmutables.
Para cambiar la interfaz de usuario, un Widget activa una reconstrucción sobre sí mismo
(normalmente llamando a setState) y construye un nuevo subárbol de Widgets.
Esto contrasta con la programación imperativa,
donde construyes y mutas manualmente las entidades de la interfaz de usuario.
Documentos y recursos relacionados
Embedder
Cada plataforma nativa soportada por Flutter tiene un embedder para la lógica específica de la plataforma. El embedder es el puente que coordina con el sistema operativo subyacente. Proporciona acceso a servicios como entradas, accesibilidad, bucles de eventos de mensajes y más. El embedder también inicia y gestiona el motor de Flutter (Flutter engine).
Cada embedder está escrito en el lenguaje nativo de la plataforma: Java y Kotlin para Android, Swift y Objective-C para iOS y macOS, y C++ para Windows y Linux.
Cada embedder permite que los paquetes de plugins añadan funcionalidad específica de la plataforma a la app.
El embedder es lanzado y gestionado por la aplicación runner.
Documentos y recursos relacionados
Motor
El motor (engine) es la lógica agnóstica de la plataforma de Flutter que está escrita en código nativo, principalmente C++.
Las principales responsabilidades del motor son las siguientes:
- Expone la API
dart:ui, que son las primitivas de bajo nivel sobre las que se construye el framework de Flutter. - Convierte comandos de dibujo de bajo nivel en píxeles (también llamado rasterización, esto incluye ImpellerImpellerEl motor de renderizado gráfico moderno de Flutter, diseñado para un rendimiento fluido y predecible. Aprende más y Skia).
- Responsable de lanzar y gestionar el entorno de ejecución de Dart.
- Responsable de maquetar texto.
- Responsable de la resolución de assets.
Documentos y recursos relacionados
Frame
Flutter busca producir 60 cuadros por segundo (fps), o 120 fps en dispositivos capaces. Esto significa que el framework tiene aproximadamente 16 ms (a 60 fps) o 8 ms (a 120 fps) para renderizar cada frame. Si la app tarda más que esto en renderizar un frame, el usuario podría notar jankJankCuando una app parece entrecortarse o dar tirones visualmente en lugar de animar fluidamente. Aprende más.
Documentos y recursos relacionados
Hot Reload
Esta característica también se llama "Hot Reload con State". Después de que el entorno de ejecución de Dart actualiza las clases con las nuevas versiones de campos y funciones, el framework de Flutter reconstruye automáticamente el árbol de Widgets, permitiéndote ver rápidamente los efectos de tus cambios. Hot Reload aumenta enormemente la velocidad de desarrollo.
Hot Reload funciona en apps móviles, web y de escritorio que se están
ejecutando en modo de depuración y es totalmente compatible en VS Code,
Android Studio e IntelliJ IDEA. No vuelve a ejecutar main ni
initState; para eso, usa Hot RestartHot RestartSimilar a Hot Reload, pero no mantiene el State de la app.
Usa Hot Restart para volver a ejecutar `main` o `initState`. Aprende más.
Hot restart
main
o
initState
.Hot Restart sigue siendo más rápido que un reinicio completo (full restart), el cual también recompila el código nativo de la plataforma (como Swift). En la web, también reinicia el Dart Development Compiler (DDC).
Documentos y recursos relacionados
Impeller
Impeller es el motor de renderizado de alto rendimiento de Flutter, construido desde cero para las necesidades de Flutter y las API gráficas modernas.
Su objetivo principal es proporcionar un rendimiento consistentemente fluido y eliminar los tirones al renderizar, particularmente aquellos causados por la compilación de shaders durante animaciones e interacciones.
Impeller logra esto precompilando un conjunto específico y más pequeño de shaders al momento de compilar la aplicación, en lugar de compilar en tiempo de ejecución.
Documentos y recursos relacionados
Jank
El jank ocurre cuando un sistema no puede mantenerse al día con la tasa de cuadros esperada y pierde frames. El jank es un problema de rendimiento. Flutter ofrece información y herramientas, como la herramienta Performance en DevTools, que pueden ayudarte a diagnosticar y solucionar el jank en tu aplicación.
Material
Material Design es un sistema adaptable de pautas, componentes y herramientas
que respaldan las mejores prácticas de diseño de interfaces de usuario.
La librería material de Flutter implementa Widgets de Material Design.
La librería material, originalmente parte del repo principal de Flutter,
se desacoplará en un paquete independiente.
Para obtener más información,
visita flutter.dev/go/decouple-design.
Documentos y recursos relacionados
Null safety
null.La null safety de Dart previene los errores resultantes del acceso no intencionado
a variables establecidas en null.
Con la sound null safety, las variables no son nulas por defecto:
solo se les puede asignar un valor de null si las declaras explícitamente
como anulables (nullable).
Esto difiere de otras implementaciones "mixtas" de null safety,
donde una variable no anulable aún podría contener null en tiempo de ejecución.
Con la sound null safety de Dart, el compilador garantiza que una
variable no anulable nunca pueda ser null.
Documentos y recursos relacionados
Prop drilling
El proceso de pasar datos a través de múltiples capas de Widgets
mediante parámetros del constructor, generalmente para llegar a un descendiente más profundo.
Este patrón puede volverse verboso, razón por la cual
a menudo se utilizan otras soluciones de State Management
(como InheritedWidget o Provider).
Documentos y recursos relacionados
pub
Pub es la herramienta utilizada para gestionar paquetes de Dart.
Te permite instalar, actualizar y gestionar dependencias para tu app de Dart.
Las dependencias se definen en el archivo pubspec.yaml
.
Los paquetes se alojan en pub.dev, el repositorio oficial de paquetes.
Documentos y recursos relacionados
RenderObject
Mientras que los Widgets son planos inmutables,
los RenderObjects son objetos mutables que persisten entre cuadros (frames).
Ellos se encargan del trabajo pesado de determinar exactamente dónde se deben colocar
los elementos y cómo deben verse.
Representan un nodo en el árbol de renderizado (render tree), que es el árbol más detallado en la arquitectura de múltiples árboles de Flutter.
Documentos y recursos relacionados
Sliver
Un sliver es una porción de un área desplazable que puedes definir
para que se comporte de una manera especial.
Piensa en los slivers como bloques de construcción que puedes componer juntos
dentro de un CustomScrollView para crear experiencias de desplazamiento personalizadas,
como desplazamiento elástico o un encabezado colapsable.
Los slivers se construyen de forma perezosa (lazy), lo que significa que Flutter solo renderiza
los slivers que son visibles en la pantalla,
haciéndolos muy eficientes para largas listas de contenido.
Viewport
Un viewport es el componente visual de la maquinaria de desplazamiento. Muestra un subconjunto de sus hijos (generalmente slivers) según el desplazamiento (scroll offset) actual. A menudo se describe como "más grande por dentro" porque puede contener más contenido del que es visible en la pantalla.
Documentos y recursos relacionados
Widget
Una descripción inmutable de parte de una interfaz de usuario.
En Flutter, casi todo es un Widget. Los Widgets son los bloques de construcción fundamentales que utilizas para crear la interfaz de usuario de tu aplicación con Flutter. Cada Widget es una declaración inmutable de _cómo debería verse la interfaz de usuario según su configuración y State actual.
Los Widgets se componen juntos en una jerarquía para formar el árbol de Widgets (widget tree). Cuando el State de un Widget cambia, el framework de Flutter reconstruye las partes necesarias del árbol para actualizar la interfaz de usuario.
Los dos tipos principales de Widgets son
StatelessWidget, los cuales no tienen un State mutable, y
StatefulWidget, los cuales tienen un
State persistente que puede ser actualizado.
Documentos y recursos relacionados
A menos que se indique lo contrario, la documentación en este sitio refleja Flutter 3.44.0.Reportar un problema.