Fiquei com dúvida na lógica relativa ao andamento do tempo do Stream. O contador para até que haja a interação do usuário com o input? Haveria alguma maneira do tempo correr livremente?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Fiquei com dúvida na lógica relativa ao andamento do tempo do Stream. O contador para até que haja a interação do usuário com o input? Haveria alguma maneira do tempo correr livremente?
Olá, Gabriel!
Pelo que entendi da sua dúvida, você está com dificuldade em entender como funciona o andamento do tempo em um Stream, certo? Vou tentar te explicar!
No contexto do curso Dart: entendendo assincronismo, o tempo do Stream é controlado pela função myStream que foi criada. Essa função recebe dois parâmetros: interval, que determina o intervalo de tempo em segundos entre cada contagem, e maxCount, que determina a contagem máxima.
O tempo do Stream é controlado por um loop while que vai incrementando a variável i a cada iteração. Dentro desse loop, é utilizado o await Future.delayed(Duration(seconds: interval)) para aguardar o tempo definido no interval antes de prosseguir para a próxima iteração.
O Stream continua contando até que a condição i != maxCount seja falsa. Quando essa condição é falsa, significa que a contagem máxima foi atingida e o Stream é finalizado.
No caso do exemplo fornecido, o Stream é utilizado para controlar o tempo de uso do KakoBOT. A cada segundo, o Stream emite um valor que indica o tempo de uso do KakoBOT. Quando a contagem máxima de 10 segundos é atingida, o Stream é finalizado e o KakoBOT é desligado.
Espero ter ajudado e bons estudos!