Сбросить mutableStateOf, если начальное значение изменилось - Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Сбросить mutableStateOf, если начальное значение изменилось - Jetpack Compose

Сообщение Anonymous »

Я новичок в Jetpack Compose и только начал пробовать его, создавая приложение таймера, но столкнулся с проблемой.
В моем приложении каждая задача имеет разную продолжительность и время после один из них закончен (время истекло), то должен начаться следующий. Моя проблема в том, что мое приложение работает корректно только для первой задачи. После завершения первой задачи и отображения второй задачи заголовок и описание задачи изменяются, но значение обратного отсчета таймера остается равным 0, оно не обновляется по сравнению с предыдущим состоянием.
The < em>onFinished вызывает один из методов модели представления, который выбирает следующую задачу, которая должна отображаться, и загружает ее в живые данные. Я наблюдаю за изменениями в этих живых данных следующим образом:

val Task = viewModel.currentTask.observeAsState().value
< /blockquote>
У этой задачи есть поле длительности, которое я передаю этому составному элементу Timer, но когда эта задача будет обновлена ​​(поскольку живые данные имеют новое значение), составной элемент Timer не Не признаю этих изменений. Обратный отсчет не возобновляется, он остается равным 0.
Я не уверен, правильно ли я понимаю и использую концепцию MutableState, поэтому может ли кто-нибудь мне помочь?
@Composable
fun Timer(duration: Long, onFinished: () -> Unit) {
var currentTimerValue by remember { mutableStateOf(duration) }
LaunchedEffect(key1 = currentTimerValue) {
if (currentTimerValue > 0) {
delay(1000L)
currentTimerValue--
} else {
onFinished.invoke()
}
}

Text(text = currentTimerValue.toString(), fontSize = 24.sp, color = Color.White)
}


Подробнее здесь: https://stackoverflow.com/questions/751 ... ck-compose
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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