Introdução
Antes de mais nada Stream é uma interface abstrata que representa uma sequência de dados assíncronos. A princípio os desenvolvedores do Flutter usam streams para gerenciar dados assíncronos.
Criando um StreamController
Assim o primeiro passo para como usar stream no Flutter é criar um StreamController
. Contudo um StreamController
é um objeto que gerencia a criação e o fluxo de dados de um stream.
Dessa forma no código acima, usamos o método StreamController.broadcast()
para criar um StreamController
que permite que vários ouvintes se inscrevam no stream.
Filtrando um Stream
Ainda mais o método where()
pode ser usado para filtrar um stream. Afinal o método where()
recebe uma função como parâmetro que é usada para determinar quais valores devem ser incluídos no stream filtrado.
Bem como no código acima, usamos o método where()
para filtrar o stream para incluir apenas valores pares.
Adicionando dados a um Stream
Os dados podem ser adicionados a um stream usando o método sink.add()
. O método sink.add()
recebe um valor como parâmetro que é adicionado ao stream.
Contudo no código acima, usamos um loop for para adicionar os valores de 1 a 10 ao stream.
Fechando um Stream
O método close()
deve ser usado para fechar um stream quando ele não for mais necessário. Pois o método close()
indica ao Flutter que o stream não produzirá mais dados.
No código acima, usamos o método close()
para fechar o stream após adicionar todos os dados.
Comentário do código
Logo o código acima cria um StreamController
que emite uma sequência de números de 1 a 10. Desta forma o código filtra o stream, incluindo apenas valores pares. O código imprime os valores pares na tela.
Aqui está uma explicação mais detalhada de cada parte do código:
- import ‘dart:async’;
Este import é necessário para usar a classe StreamController
.
- void main() {
Esta é a função principal do aplicativo.
- final StreamController<int> ctrl = StreamController<int>.broadcast();
Este código cria um StreamController
chamado ctrl
. O ctrl
é definido como broadcast()
, o que significa que permite que vários ouvintes se inscrevam no stream.
- final StreamSubscription sub = ctrl.stream.where((valor) => (valor % 2 == 0)).listen((valor) => print(‘$valor’));
Este código cria uma StreamSubscription
chamada sub
que está inscrita no stream ctrl
. A sub
usa o método where()
para filtrar o stream para incluir apenas valores pares. Os valores pares são então impressos na tela usando a função print()
.
- for(int i=1; i< 11; i++){
Este loop for adiciona os valores de 1 a 10 ao stream ctrl
.
- ctrl.close();
import 'dart:async';
void main() {
final StreamController<int> ctrl = StreamController<int>.broadcast();
final StreamSubscription sub = ctrl.stream
.where((valor)=> (valor % 2 == 0))
.listen((valor)=> print('$valor'));
for(int i=1; i< 11; 1){
ctrl.sink.add(i);
}
ctrl.close();
}
Este código fecha o stream ctrl
.
Conclusão
Em suma Stream é a ferramenta poderosa que e usada para gerenciar dados assíncronos no Flutter. Contudo ao entender como usar Stream no Flutter, você pode criar aplicativos mais eficientes e responsivos.