Skip to main content

Sink, Stream, StreamController, StreamTransformer | Flutter

  • Sink e Stream | Flutter

  • Resumo

Qual é a diferença entre Sink e Stream no Flutter?

StreamSink é um StreamConsumer, o que significa que ele pode receber vários streams e processar os eventos que esses streams emitem.

Se for o StreamSink de um StreamController, então todos os eventos dos streams adicionados são emitidos pelo stream criado pelo StreamController. Neste artigo, vamos entender a diferença entre Sink e Stream no Flutter.

Qual é a diferença entre Sink e Stream no Flutter?

Sink e Stream são ambos partes do StreamController. Além disso, você pode adicionar dados ao StreamController usando o Sink, que podem ser ouvidos via o Stream.

Um exemplo de código fica assim:

final _user = StreamController<User>();
Sink get updateUser => _user.sink;
Stream<User> get user => _user.stream;

Uso:

updateUser.add(seuObjetoUser);

Sempre que adicionamos dados ao stream através do sink, eles são emitidos. Depois disso, podem ser ouvidos usando o método listen.

user.listen((user) => print(user));

Você pode realizar várias ações antes do stream ser emitido. O método transform é um exemplo que pode ser usado para transformar os dados de entrada antes que sejam emitidos.

  • Stream – o "tapete rolante" do fluxo de dados é chamado de stream.
  • StreamController – o StreamController é quem controla o stream.
  • StreamTransformer – o StreamTransformer é quem processa os dados de entrada.
  • StreamBuilder – o StreamBuilder é um método que recebe um stream como entrada e nos fornece um builder que reconstrói a interface toda vez que há um novo valor no stream.
  • Sink – o Sink é a propriedade que recebe a entrada de dados.
  • Stream – o Stream é a propriedade que fornece a saída do Stream.

Se quiser, posso ajudar a adaptar esse conteúdo para um artigo, apresentação ou algo mais!