use*_*391 5 android kotlin android-jetpack-compose compose-recomposition
我有一个对话框,当我按下按钮时我无法关闭这是我的代码,我相信这是用于 if 循环的,但我需要它在这种情况下使其成为现实,有什么想法可以帮助我吗?
\n@Composable\n fun PopupWindowDialog(\n parentUiState: ParentHomeUiState,\n) {\n val openDialog = remember { mutableStateOf(false) }\n var sliderPosition by remember { mutableStateOf(0f) }\n\n if (!parentUiState.showInAppFeedback){\n openDialog.value = true\n }\n val recommend = sliderPosition.toInt()\n Column(\n ) {\n Box {\n if (openDialog.value) {\n Dialog(\n onDismissRequest = { openDialog.value = false },\n properties = DialogProperties(),\n ){\n Box(\n Modifier\n .fillMaxWidth()\n .fillMaxHeight()\n //.padding(vertical = 70.dp, horizontal = 10.dp)\n .padding(vertical = 70.dp )\n .background(Color.White, RoundedCornerShape(10.dp))\n //.border(1.dp, color = Color.Black, RoundedCornerShape(20.dp))\n .border(1.dp, color = Color.White, RoundedCornerShape(20.dp))\n ) {\n Button(\n modifier = Modifier\n .fillMaxWidth()\n .padding(10.dp),\n onClick = {\n openDialog.value = !openDialog.value\n }\n ) {\n Text(\n text = "\xc2\xa1Contesta y gana +20 puntos!",\n style = MaterialTheme.typography.subtitle2,\n fontWeight = FontWeight.Bold,\n modifier = Modifier.padding(3.dp))\n }\n }\n }\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
我有一个对话框,按下按钮后无法关闭
由于您没有显示您发布的代码(可组合)是如何被调用的,所以我假设.showInAppFeedback评估结果为真。
注意代码的这些部分
val openDialog = remember { mutableStateOf(false) }
...
...
if (!parentUiState.showInAppFeedback) {
openDialog.value = true
}
Run Code Online (Sandbox Code Playgroud)
,openDialog是一种状态,当它更改值时,它会改变re-compose您的整个可组合项,因此当对话框可见时,并且当您通过单击按钮将其设置为 false 时,整个可组合项将重新组合并重新评估您的 if 条件,设置 openDialog .value 再次变为 true,对话框将永远不会关闭。
我不知道你的用例,但你可以将它包装在LaunchedEffect
LaunchedEffect(parentUiState.showInAppFeedback) {
openDialog.value = true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1167 次 |
| 最近记录: |