MonotonicFrameClock недоступен в этом CoroutineContext, когда я пытаюсь изменить ModalBottomSheetState из ViewModelAndroid

Форум для тех, кто программирует под Android
Anonymous
MonotonicFrameClock недоступен в этом CoroutineContext, когда я пытаюсь изменить ModalBottomSheetState из ViewModel

Сообщение Anonymous »

Я хочу изменить состояние ModalBottomSheet из Jetpack Compose в ViewModel.
Вот что я делаю: у меня есть ViewModel, примерно так:

Код: Выделить всё

class MyViewModel() {
@ExperimentalMaterialApi
val bottomSheetDialogState = ModalBottomSheetState(
initialValue = ModalBottomSheetValue.Hidden
)

fun showBottomSheet() {
viewModelScope.launch {
bottomSheetDialogState.show()
}
}
}
и внутри фрагмента:

Код: Выделить всё

@ExperimentalMaterialApi
@Composable
fun ShowUnableToChangeDialog() {
ModalBottomSheetLayout(
sheetState = viewModel.bottomSheetDialogState,
sheetShape = RoundedCornerShape(topStart = 10.dp, topEnd = 10.dp),
sheetBackgroundColor = Color.White,
sheetContent = {
Box(modifier = Modifier.defaultMinSize(minHeight = 1.dp)) {
Column {
}
}
}
) { }
}
и когда я вызываю showBottomSheet(), я улавливаю это исключение:

java.lang.IllegalStateException : MonotonicFrameClock
недоступен в этом CoroutineContext. Вызывающие объекты должны предоставить
соответствующий MonotonicFrameClock, используя withContext.
в androidx.compose.runtime.MonotonicFrameClockKt.getMonotonicFrameClock(MonotonicFrameClock.kt:114)
в androidx.compose.runtime.MonotonicFrameClockKt.withFrameNanos(MonotonicFrameClock) .kt:85)
at androidx.compose.animation.core.SuspendAnimationKt.callWithFrameNanos(SuspendAnimation.kt:286)
at androidx.compose.animation.core.SuspendAnimationKt.animate(SuspendAnimation.kt:229) )
at androidx.compose.animation.core.Animatable$runAnimation$2.invokeSuspend(Animatable.kt:291)
at androidx.compose.animation.core.Animatable$runAnimation$2.invoke(Unknown
Источник:8)
в androidx.compose.animation.core.Animatable$runAnimation$2.invoke(Неизвестный
Источник:2)
в androidx.compose.animation.core.MutatorMutex$ mutate$2.invokeSuspend(InternalMutatorMutex.kt:119)
в androidx.compose.animation.core.MutatorMutex$mutate$2.invoke(Неизвестный
Источник:8)
в androidx.compose.animation .core.MutatorMutex$mutate$2.invoke(Unknown
Источник:4)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)

Я пробовал использовать другие области сопрограммы, например, с Dispatcher.Main и т. д., но исключение осталось прежним. Как я могу это исправить?

Подробнее здесь: https://stackoverflow.com/questions/705 ... -try-to-ch

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