可变状态作为参数传递时无法更改值

问题描述 投票:0回答:1

我正在构建一个 compose 屏幕,以将我的应用程序从视图转换为 jetpack。

我无法弄清楚如何将参数传递给可组合项并仍然允许对其进行修改。我尝试将屏幕分解成小组件。

这是代码:

@Composable
fun MyScreen(...) 
{

    var showBottomSheet by remember {
        mutableStateOf(false)
    }


    Scaffold(
    ...

       MyBottomSheet(showBottomSheet)
    ...
    ) 
}

@Composable
fun MyBottomSheet(showBottomSheet: Boolean) {
...
   ModalBottomSheet(
        onDismissRequest = {
            showBottomSheet = false
        },
        sheetState = sheetState
    ) {
        Button(onClick = {
        }) {
            Text("Hide bottom sheet")
            showBottomSheet = false
        }
    }}

知道谁将可变的

showBottomSheet
传递到另一个组件中吗?

android kotlin android-jetpack-compose
1个回答
0
投票
@Composable
fun MyScreen(...) 
{

    var showBottomSheet by remember {
        mutableStateOf(false)
    }


    Scaffold(
    ...

       MyBottomSheet(showBottomSheet, {showBottomSheet = it})
    ...
    ) 
}
@Composable
fun MyBottomSheet(showBottomSheet: Boolean, onStateChange: (Boolean) -> Unit) {
...
   ModalBottomSheet(
        onDismissRequest = {
            onStateChange(false)
        },
        sheetState = showBottomSheet
    ) {
        Button(onClick = {
        }) {
            Text("Hide bottom sheet")
            onStateChange(false)
        }
    }}

传递 lambda 来更新变量

© www.soinside.com 2019 - 2024. All rights reserved.