Só pra checar se eu entendi, o state holder ele foi criado pra desacoplar "a lógica / amarzenar estado" do metodo reposável por desenhar a tela, certo?
Só pra checar se eu entendi, o state holder ele foi criado pra desacoplar "a lógica / amarzenar estado" do metodo reposável por desenhar a tela, certo?
Opa, Thailan, Tudo bem?
Sim, você entendeu corretamente. O state holder foi criado para desacoplar a lógica e o armazenamento de estado do método responsável por desenhar a tela. Ele é uma classe que lida com os dados que devem ser apresentados na tela e também com as lógicas que envolvem esses dados.
No caso do curso Jetpack Compose: formulário e gerenciamento de estado, o state holder é utilizado para lidar com o estado da tela inicial. Ele é responsável por armazenar o texto digitado no campo de busca e também por filtrar os produtos de acordo com esse texto.
A implementação do state holder é feita através de uma classe chamada HomeScreenUiState
. Dentro dessa classe, são definidas as propriedades que representam o estado da tela, como o texto digitado e os produtos filtrados. Além disso, também são definidas as lógicas que envolvem esses dados, como a função que verifica se deve ou não mostrar as seções de produtos.
No composable HomeScreen
, é criada uma instância do state holder e as propriedades e funções do state holder são utilizadas para ler e modificar o estado da tela. Por exemplo, o texto digitado é lido através da propriedade state.text
e também é modificado através da função state.text = it
no onSearchChange
do SearchTextField
.
É importante lembrar que o state holder deve ser utilizado de forma adequada, levando em consideração as técnicas do Compose para evitar problemas de reexecução desnecessária do código. No caso do exemplo apresentado, foi utilizado o remember
para garantir que a instância do state holder seja criada apenas uma vez e seja lembrada, evitando a criação de novas instâncias a cada reexecução do código.
Qualquer dúvida, estarei à disposição :)