Se você utiliza o Bloc
como gerenciador de estado já se deparou com a situação na qual você precisa invocá-lo para realizar uma chamada específica. Uma das formas para isso é utilizarmos as extensões de contexto.
Por que isso importa
Entender como utilizar as extensões de contexto nos permitirá obter a instância mais próxima do Bloc
naquele contexto sem termos a necessidade de instanciá-lo.
No entanto, é importante ter cuidado com algumas armadilhas.
Cuidado para não utilizá-lo para observar estados
O context.read
só captura o estado atual no momento no qual ele é chamado e não recebe as novas atualizações. Isso significa que, se estivermos utilizando-o para obter novas informações do estado teremos um problema de consistência de dados em tela.
Cuidado para não pedí-lo fora do contexto correto
Outro problema comum é tentar acessar o Bloc
por meio da extensão de contexto fora do contexto no qual ele foi provisionado. Isso resultará em uma exceção, pois o Bloc não estará disponível naquele contexto específico.
Como funciona
Quando utilizamos o context.read
o que estamos fazendo é percorrer a árvore de widgets em busca de um BlocProvider
que tenha sido responsável por provisionar o Bloc
que estamos buscando.
Exemplo prático
Definição do cubit
Construção da UI
Conclusão
No exemplo anterior, demonstramos na prática o uso das extensões de contexto. Saber aplicar o context.read
tornará sua vida um pouco mais fácil para acessar funções do Bloc
desejado.
Nos próximos artigos iremos abordar o uso das outras extensões de contexto como context.select
e context.watch
, as quais trarão mais reatividade na construção dos nossos Widgets
.
Até lá!