1
resposta

Sobre o state holder

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?

1 resposta

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 :)