DEV Community

Cover image for Gerenciamento de estados utilizando o Flutter Bloc
Lucas Oliveira
Lucas Oliveira

Posted on

Gerenciamento de estados utilizando o Flutter Bloc

Então pessoal lá no meu outro post que você pode conferir seguindo clicando aqui deu pra ver que o Flutter Bloc é um dos requisitos mais solicitados dentro das vagas publicadas pelos hunters quando estão procurando desenvolvedores Flutter. Vamos entender um pouquinho da estrutura do BloC que pode e vai nos auxiliar muito no dia a dia, bem... Pelo menos para ser notados pelos recrutadores temos essa certeza né?!
Vamos lá!
Enquanto no Provider temos o gerenciamento de estados bem próximos ali dos Widgets, o BloC veio para dar uma mexida nisso, uma vez que poderemos separar o gerenciamento de estado em si da interface visual com que o usuário estará interagindo.
Como assim separar?! Esse BloC chega assim como não quer nada e já vem colocando as coisas fora do lugar? Pois é meu caro amigo, se você parar pra pensar as nossas views não deveria ter a responsabilidade de saber o que deveria ser exibido para o usuário, ela tem responsabilidade apenas de buildar e exibir.
Se você parar pra pensar vamos supor um caso que acontece demais, uma tela de lista de contatos que comunica-se com o back-end para trazer os dados do contato e mostrar para o usuário. Se você pensar rapidamente você pode até pensar que isso é apenas uma tela né?! Mas analisando direitinho você enxerga 3 telas dentro dessa.
Tela é toda interface gráfica que entra em contato com o usuário.
1 - Tela de loading enquanto o back-end processa a resposta;
2 - Tela com a lista de contatos;
3 - Tela de erro caso não obtermos o que aguardamos na resposta do back-end;
Image description

import 'package:equatable/equatable.dart';
import 'package:flutter/foundation.dart';

class HomeState extends Equatable {
  @override
  List<Object> get props => [];

}

class HomeLoadingState extends HomeState {}

class HomeErrorState extends HomeState {
  final String message;

  HomeErrorState({@required this.message});
}

class HomeStateLoaded extends HomeState {
  final List<String> list;

  HomeStateLoaded({@required this.list});
}

class HomeStateEmptyList extends HomeState {}


Enter fullscreen mode Exit fullscreen mode

Para esse estudo criei um repositório para pôr em prática os conhecimentos em Bloc que pode ser acessado clicando aqui

Top comments (0)