Fundamentos del lenguaje
27 pasos en 9 series de Dart.
Dart es el lenguaje de Flutter, y por lo tanto de una porción enorme de las apps multiplataforma que se publican hoy: un lenguaje construido por Google que compila a ARM y x64 nativos, a JavaScript y a WebAssembly, con un hot reload que hace que el ciclo de editar y correr se sienta de scripting. Nació en 2011 como aspirante a reemplazo de JavaScript, encontró su vocación cuando llegó Flutter, y creció hasta ser un lenguaje del todo moderno: seguridad ante null sólida desde 2021, y records, patrones y clases selladas desde Dart 3.
Este tour teclea el núcleo: var, final y const, interpolación de strings, expresiones switch con patrones relacionales, parámetros con nombre con required y valores por defecto, clausuras, métodos de extensión, los tres literales de colección con spread y collection-if, cadenas de iterables, clases con constructores con nombre, mixins, enums mejorados, el kit de seguridad ante null, records y desestructuración, jerarquías selladas, y async desde Futures hasta Streams y generadores sync*. El Bis es el trío de scripts de siempre — frecuencia de palabras, boletín de calificaciones y estadísticas de temperatura — en Dart 3 idiomático.
Valores
- La forma del programaEl programa Dart más pequeño: main, print y una plantilla de string.
- var, final y constTres formas de atar: mutable, una vez en runtime, fija al compilar.
- Interpolación de stringsPlantillas con $, llaves de expresión y literales multilínea.
Control de flujo
- if, else y el ternarioLas sentencias ramifican con if; el ternario elige un valor en línea.
- Expresiones switchEl switch de Dart 3 produce un valor, con patrones relacionales y _.
- Buclesfor-in para colecciones, el for clásico para contar, while de guarda.
Funciones
- Parámetros con nombreLas llaves vuelven los parámetros con nombre; required y defectos hacen el resto.
- ClausurasLas funciones son valores que recuerdan las variables de alrededor.
- Métodos de extensiónAgrega miembros a tipos que no son tuyos.
Colecciones
- Listas, sets y mapsLas tres colecciones núcleo, cada una con su literal.
- Cadenas de iterableswhere, map y fold se leen de izquierda a derecha; toList las realiza.
- Collection-if y spreadConstruye colecciones declarativamente, en el literal mismo.
Clases
- Clases y constructoresEl azúcar this. asigna campos; los constructores con nombre abren puertas.
- MixinsComportamiento engrapado con with, sin reclamar superclase.
- Enums mejoradosLos enums de Dart son clases: campos, constructores, miembros.
Seguridad ante null
- Tipos anulablesString? admite null; el compilador rastrea cuál tienes.
- Operadores null-aware??=, ?? y ! — el resto del kit de null.
- late y lo perezosoDifiere la inicialización sin volverte anulable.
Records y patrones
- RecordsAgrupa valores sin una clase; la forma es el tipo.
- PatronesDesestructura y prueba en un solo movimiento, con guardas.
- Clases selladasUna jerarquía cerrada que el compilador revisa por exhaustividad.
Async
- Futures y async/awaitasync marca la función; await la pausa a ella, no al programa.
- Streams y async*Un generador que emite en el tiempo; await for consume en orden.
- Generadores sync*Iterables perezosos: nada corre hasta que algo tira.
Bis
- word_freq.dartUna tabla de frecuencias con split, map.update y orden de dos claves.
- grade_report.dartBoletines desde un roster const, una expresión switch y relleno.
- temp_stats.dartUna semana de temperaturas: extremos, media, barras y saltos.