首页 > 解决方案 > 重构后,BottomSheetScaffold 组件不受约束

问题描述

我正在尝试拥有一个干净的BottomSheetScaffold组件,但是当我调用侦听器来重构BottomSheetScaffold内容时,看起来该组件不再受到限制。例如,在下面的可组合函数中:

@ExperimentalMaterialApi
@Composable
fun HomeScreen() {
    val bottomSheetScaffoldState = rememberBottomSheetScaffoldState(
        bottomSheetState = BottomSheetState(BottomSheetValue.Collapsed)
    )
    val (buttonText, setButtonText) = remember {
        mutableStateOf("Button")
    }
    var sheetPeekHeightValue by remember {
        mutableStateOf(50.0)
    }
    val coroutineScope = rememberCoroutineScope()
    BottomSheetScaffold(
        scaffoldState = bottomSheetScaffoldState,
        sheetContent = {
            Box(
                Modifier
                    .fillMaxWidth()
                    .height(200.dp)
            ) {
                Text(text = "Hello from sheet")
            }
        }, sheetPeekHeight = sheetPeekHeightValue.dp
    ) {
        Button(onClick = {
            coroutineScope.launch {

                if (bottomSheetScaffoldState.bottomSheetState.isCollapsed) {
                    bottomSheetScaffoldState.bottomSheetState.expand()
                } else {
                    bottomSheetScaffoldState.bottomSheetState.collapse()
                }
            }
        }) {
            Text(text = buttonText)
        }
        Button(onClick = {
            setButtonText(buttonText + ".")
            //sheetPeekHeightValue += .01
        }){Text("Changing Text Button")}
    }
}

“buttonText”按钮一直有效,直到我单击“Changing Text Button”按钮。

如果该行sheetPeekHeightValue += .01没有被注释,它将重新组合 BottomSheetScaffold 但这并不干净。


在内容中重构是BottomSheetScaffold一种好习惯吗?如果是,我应该如何正确地做到这一点?

标签: kotlinandroid-jetpack-compose

解决方案


推荐阅读