Я работаю с Compose, ViewModel и списком. Я не понимаю, почему мой пользовательский интерфейс не перестраивается, когда я нажимаю кнопку, хотя я генерирую новый список.
data class Dice(var value: Int = 6) {
fun roll() {
value = Random.nextInt(6) + 1
}
}
class MainViewModel : ViewModel() {
var diceVal = MutableStateFlow(listOf(Dice()))
fun rollDice() {
//Both not working
//diceVal.value = diceVal.value.map { it.roll(); it.copy() }
diceVal.update { it.map { it.roll(); it.copy() }}
}
}
@Composable
fun MainScreen(modifier: Modifier = Modifier, viewModel: MainViewModel = viewModel { MainViewModel() }) {
Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) {
var diceList = viewModel.diceVal.collectAsStateWithLifecycle()
diceList.value.forEach {
Button(onClick = {
viewModel.rollDice()
}) {
Text(text = it.value.toString())
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... esh-the-ui