I am doing a Google Codelab and have the following code (drawable changes when button is pressed):
@Composable
fun DiceWithButtonAndImage(modifier: Modifier = Modifier) {
var result by remember { mutableStateOf(1) }
val imageResource = when (result) {
1 -> R.drawable.dice_1
2 -> R.drawable.dice_2
3 -> R.drawable.dice_3
4 -> R.drawable.dice_4
5 -> R.drawable.dice_5
else -> R.drawable.dice_6
}
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(painter = painterResource(imageResource), contentDescription = result.toString())
Button(onClick = { result = (1..6).random() }) {
Text(text = stringResource(R.string.roll_text))
}
}
}
How does Compose know that result
has changed when it triggers recomposition? Does it detect that through Image
's painter
parameter? Or maybe through remember
or mutableStateOf()
?