Até o momento, temos um problema na atualização da interface do usuário,
que é o texto composto e o valor do contador no logcat.
A solução é usar a recomposição no Jetpack Compose.
Recomposição é o processo de atualização da interface do usuário com base nas alterações no estado do aplicativo.
Diferentemente do desenvolvimento tradicional do Android, em que as exibições são atualizadas de forma
imperativa, no Jetpack Compose, a interface do usuário é descrita de forma declarativa.
Isso significa que você define como a interface do usuário deve ser com base no estado atual do
aplicativo, e o Jetpack Compose lida com a atualização automática da interface do usuário quando o estado muda.
Quando o estado do seu aplicativo muda, como aumentar o contador.
O Jetpack compose recompõe automaticamente a interface do usuário, ou seja, eleva as funções compostas que definem sua
interface do usuário e atualiza apenas as partes da interface do usuário afetadas pelas alterações de estado.
Por exemplo, se o usuário clicar no contador, precisaremos atualizar esse texto.
Composable Only não atualiza toda a interface do usuário.
E isso é chamado de Recomposição Inteligente.
Quero que você se concentre comigo para entender a decomposição.
A recomposição é acionada por mudanças no estado.
Portanto, nesse código, estamos alterando o valor, mas não estamos acionando a recomposição.
Por exemplo, quando o valor do objeto de estado mutável criado com um estado mutável de alterações, o Jetpack Compose
sabe que a interface do usuário precisa ser atualizada e recompõe as partes afetadas da interface do usuário de acordo.
Essa abordagem declarativa e reativa simplifica o desenvolvimento da interface do usuário, pois você só precisa
se concentrar em descrever como a interface do usuário deve ficar com base no estado atual,
e o Jetpack Compose se encarrega de atualizar a interface do usuário quando o estado muda.
Então, como fazer isso? Vamos
usar a palavra-chave remember aqui.
Vou usar o remember e moverei o estado mutável de dentro dele.
Portanto, aqui estamos atualizando a interface do usuário sem salvar o estado no clique.
Estamos atualizando a interface do usuário, mas estamos esquecendo a contagem e,
para evitar o esquecimento da contagem, usaremos uma palavra-chave chamada remember.
Ao fazer a chamada, lembre-se de que você está dizendo ao Jetpack Compose para
armazenar o valor retornado pela função e lembrá-lo enquanto a função componível estiver ativa.
Isso significa que, mesmo que a função composta se
recomponha, o valor lembrado persistirá e não será recalculado.
E é por isso que estamos ficando em primeiro lugar em cada clique.
O valor inicial é definido como zero.
Quando aumentarmos o contador, o contador aumentará em um.
O valor e o valor atual do contador não
serão salvos novamente e serão zerados com outro clique.
Ele aumentará em um, e o sistema Android esquecerá que o
valor é um e o redefinirá para zero várias vezes.
A cada clique, ele aumentará em uma unidade.
Defina o valor do contador como um e redefina-o para zero porque há um valor padrão para zero.
E é por isso que usamos o remember, porque precisamos lembrar
o estado atual e o valor atual da variável count.
Vamos executar nosso aplicativo.
Tente aumentar o contador.
Você pode ver que a interface do usuário e o texto composto estão sendo atualizados para um e o valor do contador é um.
Aumentar.
Novamente, aumente o contador.
E aqui vamos nós.
Nosso aplicativo está funcionando bem.
O valor do contador é cinco e o texto do contador composable está exibindo o número cinco.
Aumente-o novamente.
E aqui vamos nós.
O valor do contador é 14 e o texto está exibindo 14.
Remember é usado para lembrar o valor da contagem em todas as recomposições da função de composição do contador.
Portanto, mesmo que a função de contador se recomponha devido a outras alterações de estado,
o valor da contagem persistirá e o texto do botão refletirá a contagem atual.