0Pricing
Dart Academy · Aula

Transformar streams: map, where e take

Remodele uma sequência de eventos.

Transformar streams: map, where e take é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 3 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.

Os fluxos podem ser transformados

Assim como as listas, os fluxos têm métodos úteis que remodelam seus eventos. Você pode transformar um fluxo em um novo sem alterar a fonte.

map transforma cada evento

O método map executa uma função em cada evento e emite o resultado. Ele transforma um fluxo de valores em um fluxo de valores transformados.

final doubled = numbers.map((n) => n * 2);

map mantém a quantidade

Com map, a quantidade de eventos permanece igual; apenas o formato deles muda. Três entradas sempre produzem exatamente três saídas. ✨

Stream.fromIterable([1, 2, 3])
    .map((n) => 'Item $n');

where filtra eventos

O método where mantém apenas os eventos que passam em um teste. Tudo o que retornar false será descartado do novo fluxo.

final evens = numbers.where((n) => n.isEven);

where pode reduzir o fluxo

Ao contrário de map, where pode emitir menos eventos do que recebeu. Se nada passar no teste, o fluxo resultante permanecerá vazio.

take limita a quantidade

O método take emite apenas os primeiros n eventos e depois para de escutar. Ele é perfeito quando você precisa de apenas alguns valores de um fluxo longo. 🎯

final firstThree = bigStream.take(3);

take cancela antecipadamente

Depois de entregar seus n eventos, take cancela automaticamente sua inscrição no fluxo de origem. O fluxo original para de produzir eventos para você.

Encadeando transformações

Como esses métodos retornam novos fluxos, você pode encadeá-los. Leia o encadeamento da esquerda para a direita: filtre, depois transforme e, por fim, limite.

numbers
    .where((n) => n.isEven)
    .map((n) => n * 10)
    .take(2);

Naturalmente preguiçosos

As transformações são preguiçosas: nada é executado até que você escute. O encadeamento processa os eventos apenas à medida que chegam, um por vez.

Mais ferramentas: takeWhile e skip

Além dos três métodos principais, takeWhile emite eventos até que um teste falhe, e skip ignora os primeiros n eventos. O mesmo estilo de encadeamento se aplica.

stream.skip(2).takeWhile((n) => n < 100);

Consumindo o resultado

Depois de transformar o fluxo, leia o novo fluxo com await for ou listen. Cada valor emitido já passou por todo o seu encadeamento.

await for (final v in transformed) {
  print(v);
}

Verificação rápida

Qual método pode reduzir a quantidade de eventos?

Recapitulação

Você pode remodelar fluxos com map para transformar, where para filtrar e take para limitar, todos encadeáveis e preguiçosos até que você escute. 🎉

Perguntas Frequentes

A aula “Transformar streams: map, where e take” é grátis?

Sim — o texto completo de “Transformar streams: map, where e take” é 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 “Transformar streams: map, where e take”?

Remodele uma sequência de eventos. 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 3 de 4.

Quanto tempo leva a aula “Transformar streams: map, where e take”?

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