Estoy tratando de usar ViewModel con Jetpack Compose,
Haciendo un incremento de número.
Pero no está funcionando. Tal vez no estoy usando el modelo de vista de la manera correcta.
Aquí está mi código de actividad principal
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Greeting() } } } @Composable fun Greeting( helloViewModel: ViewModel = viewModel() ) { Column( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.fillMaxSize() ) { Text( text = helloViewModel.number.toString(), fontSize = 60.sp, fontWeight = FontWeight.Bold ) Button(onClick = { helloViewModel.addNumber() }) { Text(text = "Increment Number ${helloViewModel.number}") } } } @Preview(showBackground = true) @Composable fun DefaultPreview() { JetpackcomposepracticeTheme { Greeting() } }Y aquí está mi clase Viewmodel.
Funciona bien con xml.
¿Cómo creo el modelo de objeto de vista?
class ViewModel: ViewModel() { var number : Int = 0 fun addNumber(){ number++ } }Compose puede recomponerse cuando cambia algún contenedor de valor de estado mutable. Puede crearlo manualmente con mutableStateOf() , mutableStateListOf() , etc., o envolviendo Flow / LiveData .
class ViewModel: ViewModel() { var number : Int by mutableStateOf(0) private set fun addNumber(){ number++ } }Le sugiero que comience con el estado en la documentación de redacción, incluido este video de YouTube que explica los principios básicos.