Menu
Coddy logo textTech

Hoja de Trucos de Dart

Última actualización

Hola Mundo y estructura del programa

Cada programa Dart empieza en la función main de nivel superior.

OperaciónSintaxis
Punto de entradavoid main() { ... }
Imprimir una líneaprint("Hello, World!");
Interpolación de cadenasprint("Hi $name");
Expresión en la interpolaciónprint("Sum: ${a + b}");
Comentario// this is a comment
Comentario de varias líneas/* ... */
Importar una bibliotecaimport 'dart:math';
Ejecutar un archivodart run main.dart

Variables y tipos

Dart es de tipado estático pero puede inferir tipos con var.

OperaciónSintaxis
Variable inferidavar age = 30;
Tipo explícitoint age = 30;
Constante en tiempo de compilaciónconst pi = 3.14;
Constante en tiempo de ejecuciónfinal name = getName();
Tipos básicosint, double, String, bool
Tipo dinámicodynamic x = 5;
Conversión de tipoint.parse("42"), n.toString()
Comprobar el tipox is String, x as String

Null safety

Los tipos no admiten null por defecto; añade ? para permitir null.

OperaciónSintaxis
No anulable (por defecto)int count = 0;
Tipo anulableString? name;
Acceso seguro ante nulluser?.name
Fusión de nulosname ?? "default"
Asignación con fusión de nulosname ??= "default";
Afirmar no nuloname!
Inicialización tardíalate String value;
Spread seguro ante null[...?maybeList]

Cadenas

Las cadenas admiten comillas simples, dobles y triples.

OperaciónSintaxis
Longituds.length
Mayúsculas / minúsculass.toUpperCase(), s.toLowerCase()
Interpolación"Total: $price"
Concatenar"foo" + "bar"
Contienes.contains("ell")
Empieza / termina cons.startsWith("he")
Dividir"a,b,c".split(",")
Reemplazars.replaceAll("a", "b")
Subcadenas.substring(0, 3)
Recortars.trim()

Colecciones (List, Map, Set)

Tres tipos de colección principales con sintaxis literal.

OperaciónSintaxis
Literal de listavar nums = [1, 2, 3];
Añadir a la listanums.add(4);
Acceder / longitudnums[0], nums.length
Map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
Literal de mapavar ages = {"Ada": 30};
Acceso al mapaages["Ada"]
Literal de conjuntovar ids = {1, 2, 3};
Operador spreadvar all = [...a, ...b];
If / for en colecciones[if (show) 1, for (n in xs) n]

Control de flujo

Las condiciones van entre paréntesis; switch admite patrones.

OperaciónSintaxis
If / elseif (x > 0) { ... } else { ... }
Ternariovar r = x > 0 ? "pos" : "neg";
Switchswitch (n) { case 1: ...; default: ... }
Bucle forfor (var i = 0; i < 10; i++) { ... }
Bucle for-infor (var item in items) { ... }
forEachitems.forEach((x) => print(x));
Bucle whilewhile (x < 100) { ... }
Do-whiledo { ... } while (x < 100);
Break / continuebreak;, continue;

Funciones

Las funciones son de primera clase; la sintaxis de flecha acorta las expresiones únicas.

OperaciónSintaxis
Definir una funciónint add(int a, int b) { return a + b; }
Función flechaint square(int x) => x * x;
Posicional opcionalvoid log(String m, [int? code]) { ... }
Parámetros con nombrevoid box({int w = 0, int h = 0}) { ... }
Con nombre obligatoriovoid box({required int w}) { ... }
Función anónimavar f = (x) => x * 2;
Pasar como argumentonums.map((n) => n * 2)
Typedeftypedef IntOp = int Function(int);

Clases y constructores

Las clases contienen estado y comportamiento; los constructores vienen en varias formas.

OperaciónSintaxis
Definir una claseclass Point { int x; int y; }
ConstructorPoint(this.x, this.y);
Constructor con nombrePoint.origin() : x = 0, y = 0;
Crear una instanciavar p = Point(1, 2);
Métododouble dist() { ... }
Getterint get area => w * h;
Herenciaclass Circle extends Shape { ... }
Llamar a supersuper(args)
Clase abstractaabstract class Shape { ... }
Implementar una interfazclass Dog implements Animal { ... }

Async (Future / async-await)

Los futures representan valores disponibles más tarde; await pausa hasta que se resuelven.

OperaciónSintaxis
Función asyncFuture<int> load() async { ... }
Esperar un futurevar data = await load();
Devolver un valorreturn 42; dentro de una función async
Retrasoawait Future.delayed(Duration(seconds: 1));
Manejar errorestry { await load(); } catch (e) { ... }
Encadenar con thenload().then((v) => print(v));
Ejecutar en paraleloawait Future.wait([a(), b()]);
Stream asyncawait for (var x in stream) { ... }

La sintaxis de Dart que más usas, en una sola página. Esta hoja de trucos de Dart es una referencia rápida para el núcleo del lenguaje: variables y tipos, null safety, cadenas, colecciones, control de flujo, funciones, clases y los futures y async/await que usas para escribir las apps detrás de Flutter.

Todo lo que hay aquí es Dart estándar y se ejecuta en el SDK oficial. Copia lo que necesites o prueba cada fragmento en vivo en el playground de Dart, sin necesidad de instalar nada.

Preguntas frecuentes sobre la hoja de trucos de Dart

¿Esta hoja de trucos de Dart es gratis?
Sí. Esta hoja de trucos de Dart es completamente gratuita, sin necesidad de registrarse. Guárdala en favoritos y vuelve cuando necesites consultar un operador de null safety, un método de colección o un patrón async.
¿Cómo funciona la null safety en Dart?
En Dart, cada tipo no admite null por defecto: int count nunca puede contener null. Para permitir null añades un ? (String? name), y entonces el compilador te obliga a manejar el caso nulo. Algunos ayudantes lo hacen conciso: ?. para el acceso seguro ante null, ?? para un valor de reserva y ! para afirmar que un valor no es nulo cuando estás seguro. Esto detecta los errores de null en tiempo de compilación en lugar de en tiempo de ejecución.
¿Qué es un Future y cómo funcionan async y await?
Un Future representa un valor que estará disponible más tarde, como el resultado de una llamada de red. Marcar una función como async te permite usar await, que pausa la ejecución hasta que el future se completa y luego te da el valor, de modo que escribes código asíncrono que se lee de arriba abajo como código síncrono. Envuelve los await en try/catch para manejar los errores.
¿Puedo practicar Dart en línea?
Sí. Abre el playground de Dart para ejecutar cualquier fragmento de esta hoja de trucos en tu navegador, sin instalar ningún SDK. Cuando quieras estructura, el curso interactivo y gratuito de Dart de Coddy te lleva paso a paso desde la null safety y las colecciones hasta las clases y async/await.
¿Esta hoja de trucos es buena para principiantes?
Sí. Está organizada desde los temas más comunes (variables, null safety, control de flujo) hasta los avanzados (clases, futures, async/await), de modo que puedes usar las secciones de arriba desde el primer día e ir avanzando hacia el resto.
Coddy programming languages illustration

Aprende Dart con Coddy

COMENZAR