Fala galera, olhando o codigo que o professor sugere no video eu fiz de uma forma um pouco diferente, apenas como sugestão vou mencionar abaixo para ampliar nossos debates e conhecimento.
O compose FormularioContatoNavigation já possui um state sendo coletado conforme abaixo:
val state by viewModel.uiState.collectAsState()
Então eu já tenho um objeto que tem a capacidade de compreender quando está sendo alterado ou não.
Então no meu composable FormularioContatoTela eu apenas indico na ViewModel que eu gostaria de salvar conforme o metodo criado, não faço nenhuma passagem de parametro apenas realizo simplesmente a intenção de salvar.
FormularioContatoTela(
state = state,
onClickSalvar = {
viewModel.salvar()
navController.popBackStack()
},
onCarregarImagem = {
viewModel.carregaImagem(it)
}
)
Então dentro da ViewModel eu uso o meu uiState que ja foi alterado ...
fun salvar(){
with(_uiState.value) {
viewModelScope.launch {
contatoDao.insere(
Contato(
id = id,
nome = nome,
sobrenome = sobrenome,
telefone = telefone,
fotoPerfil = fotoPerfil,
aniversario = aniversario,
),
)
}
}
}
Essa é uma estrategia parecida com o prof Alex Felipe demonstrou em um dos cursos de Composable da formação.