在编写过程中,其思想是通过UiState来维护可组合状态。每次更新UiState时,都会重新组合可组合。但是,在某些情况下,我们不能通过重新组合来更新可组合的,相反,我们需要调用。例如,使用ModalBottomSheetLayout
,为了展开/折叠,我不触发重新组合,而是调用state对象,如下所示:
scope.launch {
modalBottomSheetState.animateTo(ModalBottomSheetValue.Expanded)
}
假设我想通过UiState而不是这些调用来维护底部表状态。这有可能吗?我以底部表为例,但我认为这是一个可以应用于其他可组合组件的问题。
发布于 2022-05-24 08:11:17
您可以尝试使用“记住”扩展函数。
val modalBottomSheetState = rememberModalBottomSheetState(ModalBottomSheetValue.Hidden)
发布于 2022-05-24 08:50:31
"如果我有八个小时来写作曲屏幕,我会花前六个小时阅读文档。“-亚伯拉罕·林肯
撰写应该没有副作用,但是,如果你需要它们,你可以通过LaunchedEffect使用它们。因此,我的问题的答案是将布尔值isBottomSheetExpanded
保持在我的UiState中,然后在撰写调用中保持。
if (state.isBottomSheetExpanded) {
LaunchedEffect(modalBottomSheetState) {
modalBottomSheetState.animateTo(ModalBottomSheetValue.Expanded)
}
} else {
LaunchedEffect(modalBottomSheetState) {
modalBottomSheetState.animateTo(ModalBottomSheetValue.Hidden)
}
}
https://stackoverflow.com/questions/72364690
复制相似问题