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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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 :)