Новый список в Compose не обновляет пользовательский интерфейс.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Новый список в Compose не обновляет пользовательский интерфейс.

Сообщение Anonymous »

Я работаю с 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»