我正在构建一个 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
传递到另一个组件中吗?
@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 来更新变量