Saltar a contenido

Sesión 3 · Asincronía y primera app

Tras ver Future, async/await y crear la primera app.

R17

La cafetera. Función prepararCafe() que devuelve un Future<String> y tarda 3 s. En main: muestra Enciendo la cafetera, espera el café y muestra ¡Café listo!.

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

Future<String> prepararCafe() async {
  await Future.delayed(const Duration(seconds: 3));
  return 'Café';
}
Future<void> main() async {
// ... (resto de la solución bloqueado)

R18

Adivina el orden. Sin ejecutarlo, escribe qué imprime este código y explica por qué:

Future<void> main() async {
  print('A');
  Future.delayed(Duration.zero, () => print('B'));
  print('C');
  await Future.delayed(const Duration(milliseconds: 10));
  print('D');
}

R19

Tres descargas. Tres tareas que tardan 1, 2 y 3 s. Mide el tiempo pidiéndolas una detrás de otra y después todas a la vez.

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

Future<String> descargar(String nombre, int segundos) =>
    Future.delayed(Duration(seconds: segundos), () => nombre);
Future<void> main() async {
  // Una detrás de otra
  var reloj = Stopwatch()..start();
// ... (resto de la solución bloqueado)

R20

División peligrosa. Función asíncrona dividir(a, b) que tarda 1 s y lanza una excepción si b es 0. Captúrala con try/catch.

R21

Cuenta atrás. Un Stream<int> con async* que cuente de 10 a 0 cada medio segundo. Consúmelo con await for mostrando solo los pares.

R22

Contador que resta. En hola_mundo, añade un segundo botón que reste y haz que el número se ponga en rojo cuando sea negativo. Usa solo hot reload.