gpt4 book ai didi

android - Jetpack 撰写 : BottomSheet state change callback

转载 作者:行者123 更新时间:2023-12-05 00:13:04 26 4
gpt4 key购买 nike

如何在 JetPack Compose BottomSheet 状态更改上实现回调/监听器机制?
类似于:

   @Override  
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_COLLAPSED && mIsCollapsedFromBackPress){

}
}

@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
正如我们过去在 Java/Kotlin 中所做的那样。
现在,我将其作为 lambda 传递给另一个需要关闭 Bottom Sheet 的可组合对象。
    val closeSheet: () -> Unit = {
scope.launch {
modalState.hide()
}
}
但我想得到 Bottom Sheet 已完全折叠的回调,我可以继续我的任务。
我面临的实际问题:
我正在单击按钮将可组合转换为位图。按钮位于 BottomSheet 内部,需要转换的可组合项位于 BottomSheet 后面。因此,有时 Bottom Sheet 也会出现在位图中。我只想在 Bottom Sheet 完全折叠时触发该过程。
我找到了 this回答 SO,但问题仍然是关于回调的。不知道如何使用它。

最佳答案

可以使用snapshotFlow,引用this .它从可观察的快照状态创建一个流。这是一个示例代码

    // State change callback
LaunchedEffect(sheetState) {
snapshotFlow { sheetState.isVisible }.collect { isVisible ->
if (isVisible) {
// Sheet is visible
} else {
// Not visible
}
}
}
您也可以将此 snapshotFlow 用于其他事情,例如 Pager 页面更改回调
    // Page change callback
LaunchedEffect(pagerState) {
snapshotFlow { pagerState.currentPage }.collect { page ->
when (page) {
0 -> // First page
1 -> // Second page
else -> // Other pages
}
}
}

关于android - Jetpack 撰写 : BottomSheet state change callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69794875/

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