我正在使用Jetpack Compose开发一个Android应用程序,遇到了一个问题。当我与底部弹出窗口进行交互(向下拖动或使用返回按钮关闭它)时,我的屏幕变得无响应,直到我重新启动应用程序才能正常工作。这种行为是不符合预期的,我正在努力找出根本原因。以下是相关细节:
这是底部弹出窗口:
这是它打开的地方:
我尝试过的方法:
- 检查了我的状态管理,确保它是正确的。 - 回顾了我的协程使用情况,以防有任何潜在的阻塞问题。 - 确认我正在使用适当的Compose组件和ScaffoldState。
这是底部弹出窗口:
fun BottomSheet(
onDismiss: () -> Unit
) {
val bottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
val scope = rememberCoroutineScope()
scope.launch {
bottomSheetState.expand()
}
ModalBottomSheet(
onDismissRequest = { onDismiss() },
sheetState = bottomSheetState,
dragHandle = { BottomSheetDefaults.DragHandle() }
) {
ColorPicker()
}
}```
这是它打开的地方:
Scaffold(
modifier = Modifier.fillMaxSize(),
scaffoldState = scaffoldState,
topBar = {
AppBar(
...
)
},
content = { paddingValue -\>
Box(
modifier = Modifier
.fillMaxSize()
.padding(
top = paddingValue.calculateTopPadding(),
)
) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp)
.verticalScroll(rememberScrollState())
) {
// Night Mode setting Section
...
// Font setting Section
...
// color setting Section
CustomCard(
title = "Color",
isExpandedInitially = fontColorSettingExpand,
onItemClick = {
fontColorSettingExpand = !fontColorSettingExpand
}) {
BottomSheet(
navController = navController,
onDismiss = {
//todo save
})
}```
我尝试过的方法:
- 检查了我的状态管理,确保它是正确的。 - 回顾了我的协程使用情况,以防有任何潜在的阻塞问题。 - 确认我正在使用适当的Compose组件和ScaffoldState。
onDismiss
方法中,你在注释中写了"todo save"。可能是因为你在onDismiss
回调中在UI线程上执行了IO操作。为了测试这个问题,你可以将onDismiss
方法中的所有代码注释掉,看看问题是否解决。 - undefined