• Dart tiene un total de 61 palabras clave.
  • Dart distingue entre mayúsculas y minúsculas
66 Keywords
abstract else import show
as enum in static
assert export interface super
async extends is switch
await extension late sync
base external library this
break factory mixin throw
case false new true
catch final (variable) null try
class final (clase) on typedef
const finally operator var
continue for part void
covariant Function required when
default get rethrow while
deferred hide return with
do if sealed yield
dynamic implements set

5 Palabras clave contextuales

Que solo tienen significado en lugares particulares del lenguaje.

show
Para importar parte de un paquete.
// Importa sólo color
import 'package:lib/lib.dart' show color;
hide
Para exceptuar cierta parte del paquete al importarlo.
// Importa todo excepto color
import 'package:lib/lib.dart' hide color;
async
Junto a await, se usa para la programación asíncrona.
// cuando hay un Future nos pide agregar async obligatoriamente.
Future<void> checkVersion() async {
  var version = await lookUpVersion();
  // otras sentencias
}

🖥️

Hay también otro uso async* para funciones generadoras asíncronas.

Una función generadora es una función especial que puede generar una secuencia de valores a medida que se solicitan (se itera sobre ellos), en lugar de producir todos los valores de una vez.

Stream<int> contarAsync(int hasta) async* {
  for (int i = 1; i <= hasta; i++) {
    await Future.delayed(Duration(seconds: 1));
    yield i;
  }
}
// Ejemplo de uso
await for (var n in contarAsync(3)) {
  print(n);
}
sync
Para implementar una función se generadora síncrona.

Una función generadora síncrona produce valores de manera perezosa (lazy), uno por uno, solo cuando se necesitan.

Iterable<int> naturalsNumber(int limit) sync* {
  for (int i = 0; i < limit; i++) {
    yield i;
  }
}

🧠 Diferencia clave

Característica sync* async*
Retorna Iterable<T> Stream<T>
Iteración for (var x in ...) await for (var x in ...)
Esperas/Delays ❌ No ✅ Sí (await funciona)
Uso típico Datos inmediatos Cuando los datos llegan con el tiempo (por ejemplo, de la red, archivos, temporizadores)
on
Para especificar un tipo de excepción al catch.
try {
  // sentencias que pueden generar excepción
} on FormatException catch (e) {
  // manejo solo de la excepción FormatException
} on NumberException catch (e) {
  // manejo solo de la excepción NumberException
} catch (e) {
  // Manejo genérico para otras excepciones
}

Palabras clave

abstract
Para declarar las clases abstractas, que son clases que no requiera una implementación completa y concreta de toda su interfaz y por lo general tienen métodos abstractos.
abstract class Shape {
  // función abstracta sin implementación
  double area();

  // función concreto con implementación
  void draw() {
    print('Dibujando la figura');
  }
}
as
Operador para asignar un objeto a un tipo determinado.
(employee as Person).firstName = 'Bob';