É muito comum que aplicativos mobile necessitem ler valores de recursos externos para realizar suas tarefas. Entretanto, o aplicativo não pode ficar bloqueado, aguardando a leitura desses valores. Por isso, a programação assíncrona em Flutter/Dart exerce um papel fundamental nessa questão.
A classe Stream pode ser usada para retornar uma sequência de eventos (resultados) que precisam ser processados assincronamente em um aplicativo Flutter.
Qual das alternativas a seguir mostra um código em Dart para gerar uma Stream de valores inteiros de 0 até N?
Selecione a resposta:
Ed
semana passada
Para gerar uma `Stream` de valores inteiros de 0 até N em Dart, precisamos usar a palavra-chave `yield` dentro de uma função assíncrona que retorna um `Stream`. Vamos analisar as alternativas: a) `Stream numerosAsync(int n) async* { int k = 0; while (k < n) yield k++; }` - Esta opção está correta. Ela cria uma `Stream` e usa `yield` para retornar os valores de `k` de 0 até N. b) `int numerosAsync(int n) async* { int k = 0; while (k < n) yield k++; }` - Esta opção está incorreta porque a função deveria retornar um `Stream`, mas está retornando um `int`. c) `Stream numerosAsync(int n) async* { int k = 0; while (k < n) return k; }` - Esta opção está incorreta porque `return` não é usado para gerar múltiplos valores em uma `Stream`. Deveria ser `yield`. d) `Stream numerosAsync(int n) async* { int k = 0; while (k < n) return k++; }` - Esta opção está incorreta pelo mesmo motivo da opção anterior. `return` não gera uma sequência de valores. e) `Stream numerosAsync(int n) async* { yield n++; }` - Esta opção está incorreta porque ela apenas gera o valor de `n` uma vez e não gera a sequência de 0 até N. Portanto, a alternativa correta é: a) `Stream numerosAsync(int n) async* { int k = 0; while (k < n) yield k++; }`