Skip to content

Cheat Sheet de Dart

Última verificación mayo 2026 — corre en tu navegador
Cheatsheet de Dart
var name = 'Alice';

Variable con tipo inferido

Básicos
String name = 'Alice';

Variable con tipo explícito

Básicos
final age = 30;

Constante en tiempo de ejecución (asignación única)

Básicos
const pi = 3.14;

Constante en tiempo de compilación

Básicos
late String description;

No-nulable con inicialización diferida

Básicos
int double num String bool

Tipos integrados

Básicos
dynamic x = 'anything';

Tipo dinámico (any)

Básicos
var name = 'World';
print('Hello, $name!');

Interpolación de cadena

Básicos
print('Sum: ${a + b}');

Interpolar expresión

Básicos
if (x > 0) { ... } else if (x == 0) { ... } else { ... }

If/else

Básicos
for (var i = 0; i < 10; i++) { ... }

Bucle for clásico

Básicos
for (var item in list) { ... }

Bucle for-in

Básicos
list.forEach((item) => print(item));

Iteración con forEach

Básicos
while (condition) { ... }

Bucle while

Básicos
switch (x) {
  case 1: ...; break;
  default: ...;
}

Sentencia switch

Básicos
String? maybeName;

Tipo nullable

Seguridad de nulos
name ?? 'Anonymous'

Operador de coalescencia nula

Seguridad de nulos
name ??= 'default';

Asignar si es null

Seguridad de nulos
user?.name?.length

Cadena con null-aware

Seguridad de nulos
name!

Aserción no-nulo (bang)

Seguridad de nulos
if (name != null) { print(name.length); }

Promoción a no-nulo tras check

Seguridad de nulos
var list = [1, 2, 3];

Literal de lista

Colecciones
List<int> list = [1, 2, 3];

Lista tipada

Colecciones
list.add(4);

Añadir elemento

Colecciones
list.removeAt(0);

Eliminar por índice

Colecciones
list.where((x) => x > 2).toList()

Filtrar lista

Colecciones
list.map((x) => x * 2).toList()

Transformar cada elemento

Colecciones
list.reduce((a, b) => a + b)

Reducir a un solo valor

Colecciones
var set = {1, 2, 3};

Literal de set

Colecciones
var map = {'a': 1, 'b': 2};

Literal de map

Colecciones
map['key'] = value;

Establecer valor del map

Colecciones
map.containsKey('key')

Comprobar si existe la clave

Colecciones
[...list1, ...list2]

Operador spread

Colecciones
[if (c) 'a', for (var i in list) i]

If/for en colecciones

Colecciones
int add(int a, int b) => a + b;

Función flecha

Funciones
void greet(String name) {
  print('Hello $name');
}

Función con nombre

Funciones
void greet({String name = 'World'}) {}

Parámetros nombrados con defaults

Funciones
void greet({required String name}) {}

Parámetro nombrado obligatorio

Funciones
void log(String msg, [String? tag]) {}

Parámetro posicional opcional

Funciones
var f = (int x) => x * 2;

Función anónima (lambda)

Funciones
class User {
  String name;
  int age;
  User(this.name, this.age);
}

Clase con constructor

Clases
User({required this.name, this.age = 0});

Parámetros de constructor nombrados

Clases
User.guest() : name = 'Guest', age = 0;

Constructor nombrado

Clases
class Admin extends User { ... }

Herencia

Clases
class Duck with Swimmer, Flyer { ... }

Mixins

Clases
abstract class Shape { double area(); }

Clase abstracta

Clases
class Point {
  final double x, y;
  const Point(this.x, this.y);
}

Clase inmutable con const constructor

Clases
String get fullName => '$first $last';

Getter

Clases
set age(int v) { _age = v; }

Setter

Clases
static const version = '1.0';

Miembro estático

Clases
Future<String> fetch() async {
  return 'data';
}

Función asíncrona

Asíncrono
final data = await fetch();

Await de un Future

Asíncrono
try {
  await risky();
} catch (e) { ... }

Manejo de errores asíncrono

Asíncrono
Stream<int> counter() async* {
  for (var i = 0; ; i++) yield i;
}

Generador async (Stream)

Asíncrono
await for (var event in stream) { ... }

Escuchar un stream

Asíncrono
Future.delayed(Duration(seconds: 1), () => 'done')

Future con delay

Asíncrono
Future.wait([f1, f2, f3])

Esperar múltiples futures

Asíncrono
Mostrando 57 de 57 fragmentos

Cheat Sheet de Dart — Null Safety, Async/Await, Clases y Mixins

Dart salió en 2011, incorporó null safety estricta en Dart 2.12 y hoy es sobre todo el lenguaje detrás de Flutter. La chuleta de abajo cubre 55+ fragmentos en básicos, null safety, colecciones, funciones, clases y async — el trozo al que se recurre a diario en cliente y servidor. La mayoría de los líos en código Dart no vienen de olvidar sintaxis. Vienen de rarezas que parecen razonables hasta que muerden. El modificador `late` aplaza la inicialización pero lanza un `LateInitializationError` la primera vez que el campo se lee antes de asignarlo, y el fallo aparece lejos de la asignación que falta. El bang `!` afirma "confía, no es null" y lanza un error en el primer acceso, y oculta la causa real. `const` y `final` parecen intercambiables, pero `const` es constante en tiempo de compilación — utilizable en constructores `const` y canonicalizada por el runtime — mientras que `final` es asignación única en runtime. Estos son los fragmentos que se acaban consultando al depurar eso: el operador null-aware adecuado, el constructor que toca, el patrón async correcto, sin releer la guía de Dart desde la primera página cada vez.

Trampas habituales en Dart

Hay un puñado de patrones que merecen sitio cerca de la cabecera de cualquier archivo Dart. `String?` y `String` son tipos distintos bajo null safety estricta, así que un valor `String?` no se asigna donde se espera un `String` sin desempaquetado explícito (`!`, `??` o una comprobación que promueva el tipo). El operador `??=` asigna solo si la variable es null — la forma idiomática de inicializar perezosamente un campo nullable sin un `if`. Los literales `[1, 2, 3]` son growable por defecto, mientras que `List.filled(n, value)` devuelve una lista fija salvo que se pase `growable: true`, y llamar a `add` sobre la fija lanza en runtime y no en compilación. La cascada `..` devuelve el receptor en lugar del resultado del método, así que `final controller = TextEditingController()..addListener(...)` deja el controller en el ámbito y no el registro del listener. Las funciones async envuelven implícitamente su retorno en un `Future`, así que un `return value` síncrono dentro de `async` produce un `Future<T>` y obliga a esperarlo con `await`. La chuleta agrupa esto en Básicos, Null Safety, Colecciones, Funciones, Clases y Async para que la sección esté a un clic.

  • Más de 55 fragmentos prácticos de Dart
  • 6 categorías del lenguaje
  • Operadores y patrones de null safety
  • Async/await y Streams
  • Clases, mixins y constructores
  • Copia al portapapeles con un clic

Gratis. Sin registro. Tus datos permanecen en tu navegador. Anuncios mediante Google AdSense (con consentimiento).

Por ·