gpt4 book ai didi

android - 监听 Jetpack Compose 中的 ModalBottomSheetLayout 状态变化

转载 作者:行者123 更新时间:2023-12-04 13:06:43 35 4
gpt4 key购买 nike

目前我正在使用 ModalBottomSheetLayout 来显示底部工作表。
不知道有没有办法监听底部页面关闭事件?

最佳答案

在 Compose 中,您需要检查可变状态的当前值来监听更改。
如果是 ModalBottomSheetLayout你有 ModalBottomSheetState ,您可以查看 currentValue这种状态。如果需要,您可以根据此值修改 View 状态。
如果你想对状态变化执行一些操作,你需要使用 side effects .最基本的是 LaunchedEffect ,其中作为 key你可以传递一些你想看的值。每次此值更改时,都会调用块:

LaunchedEffect(modalBottomSheetState.currentValue) {
println(modalBottomSheetState.currentValue)
}
此外,当您启动屏幕时,我将第一次被调用,您将获得 Hidden那里也是,所以根据您的需要,它可能不是一个理想的解决方案。

要最接近监听隐藏,您可以使用 DisposableEffect .
if (modalBottomSheetState.currentValue != ModalBottomSheetValue.Hidden) {
DisposableEffect(Unit) {
onDispose {
println("hidden")
}
}
}
我在这里推出 DisposableEffect当您的工作表出现和消失时 - 我正在将其从 View 层次结构中删除,这将导致 onDispose被称为。
基本上可以对状态执行的所有操作的完整示例:
val modalBottomSheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden)
val scope = rememberCoroutineScope()
LaunchedEffect(modalBottomSheetState.currentValue) {
println(modalBottomSheetState.currentValue)
}
if (modalBottomSheetState.currentValue != ModalBottomSheetValue.Hidden) {
DisposableEffect(Unit) {
onDispose {
println("hidden")
}
}
}
ModalBottomSheetLayout(
sheetState = modalBottomSheetState,
sheetContent = {
Text(
"sheetContent",
modifier = Modifier.fillMaxHeight()
)
}
) {
Column {
Text(modalBottomSheetState.currentValue.toString())
Button(onClick = {
scope.launch {
modalBottomSheetState.show()
}
}) {
Text("Show bottom sheet")
}
}
}

关于android - 监听 Jetpack Compose 中的 ModalBottomSheetLayout 状态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69052660/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com