Dart Academy · Aula

Escutar com await for

Leia eventos à medida que chegam.

Aula 1 de 413 etapas

Escutar com await for é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.

O que é um Stream

Um Stream é uma sequência de valores que chegam ao longo do tempo, e não todos de uma vez. Pense nele como um Future que pode entregar muitos resultados em vez de apenas um.

Fluxos vs. Futures

Um Future fornece um valor posteriormente. Um fluxo entrega uma série completa de eventos, um após o outro, até informar que terminou. 🌊

Conheça await for

O laço await for lê os eventos de um fluxo à medida que eles chegam. Cada passagem pelo laço fornece o próximo valor emitido pelo fluxo.

await for (final value in stream) {
  print(value);
}

Ele precisa estar em async

Como await for pausa para aguardar eventos, ele só funciona dentro de uma função marcada como async. A função fica suspensa até que o próximo valor esteja pronto.

Future<void> show(Stream<int> s) async {
  await for (final n in s) print(n);
}

Um fluxo para escutar

Você pode criar rapidamente um fluxo com Stream.fromIterable. Ele emite cada elemento da lista na ordem, o que é perfeito para experimentar await for.

final stream = Stream.fromIterable([1, 2, 3]);

Percorrendo os eventos

Combine esse fluxo com await for para que o laço seja executado uma vez para cada valor emitido. Aqui, ele imprime 1, depois 2 e depois 3.

await for (final n in Stream.fromIterable([1, 2, 3])) {
  print(n);
}

Aguardando entre eventos

Os fluxos reais geralmente fazem pausas entre eventos. Com await for, seu código simplesmente aguarda durante essas pausas e retoma a execução no instante em que o próximo valor chega. ⏳

final ticks = Stream.periodic(
    Duration(seconds: 1), (i) => i);

O laço termina naturalmente

Quando um fluxo termina de enviar eventos, ele envia um sinal de concluído. Seu laço await for é encerrado por conta própria, e a função continua depois dele.

await for (final n in finiteStream) print(n);
print('Stream finished');

Os erros chegam ao laço

Se o fluxo emitir um erro, esse erro será lançado exatamente na linha do await for. Você pode envolver o laço em try/catch para tratá-lo de forma adequada.

try {
  await for (final n in maybeFails) print(n);
} catch (e) {
  print('Caught: $e');
}

break cancela a escuta

Usar break dentro de await for interrompe o laço e cancela silenciosamente sua inscrição no fluxo. Você não receberá mais os eventos restantes.

await for (final n in stream) {
  if (n > 100) break;
}

Um ouvinte por vez

Um laço await for se inscreve em um fluxo de assinatura única. Esse fluxo só pode ser lido uma vez; portanto, um segundo laço sobre ele lançaria um erro.

Verificação rápida

Teste o que você sabe sobre await for.

Recapitulação

Você aprendeu que um fluxo entrega muitos valores ao longo do tempo e que await for os lê um por um dentro de uma função async, até que o fluxo seja concluído. Muito bem! 🎉

Grátis para começar

Aprenda Dart com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “Escutar com await for” é grátis?

Sim — o texto completo de “Escutar com await for” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.

O que vou aprender em “Escutar com await for”?

Leia eventos à medida que chegam. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Dart Academy?

Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Escutar com await for”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Dart Academy?

Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Escutar com await for
  2. Streams individuais versus de transmissão
  3. Transformar streams: map, where e take
  4. Criar streams com async*
← Voltar para Dart Academy