Skip to content

Instantly share code, notes, and snippets.

@cleomarbrdias
Created July 19, 2019 14:01
Show Gist options
  • Save cleomarbrdias/5d40dace258bf9dd2e03f2e38e1b09ad to your computer and use it in GitHub Desktop.
Save cleomarbrdias/5d40dace258bf9dd2e03f2e38e1b09ad to your computer and use it in GitHub Desktop.
PesquisaBloc
class PesquisasBloc implements BlocBase {
//declarando meu service API
Api api;
//instanciando uma lista para armazenar meus dados
List<Post> posts;
//criando controles de saida de saida
final StreamController<List<Post>> _postsController =
StreamController<List<Post>>();
Stream get outPosts => _postsController.stream;
//criando controles de entrada
final StreamController<String> _pesquisaController =
StreamController<String>();
Sink get inPesquisa => _pesquisaController.sink;
PesquisasBloc() {
api = Api();
_pesquisaController.stream.listen(_pesquisa);
}
void _pesquisa(String pesquisa) async {
if (pesquisa != null) {
_postsController.sink.add([]);
posts = await api.getSearch(pesquisa);
} else {
posts += await api.getSearchNext();
}
_postsController.sink.add(posts);
}
@override
void dispose() {
print("executou o dispose na pesquisa");
_postsController.close();
_pesquisaController.close();
}
}
@bmatheus91
Copy link

bmatheus91 commented Jul 19, 2019

Na função void dispose(), como tu está sobrescrevendo o método é necessário fazer a chamada do dispose da classe Pai. Isso é feito com um super.dispose();

@override
  void dispose() {
    print("executou o dispose na pesquisa");
    _postsController.close();
    _pesquisaController.close();
    super.dispose();
  }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment