pavi2410
06/04/2020, 6:33 PMAlertDialog
? I want to implement an Exit Dialog but it is neither closing when onCloseRequest
is called nor when confirmButton
is clicked
@Composable
private fun ExitDialog() {
val (show, setShow) = state { true }
if (show) {
AlertDialog(
text = {
Text("Do you want to really quit???")
},
confirmButton = {
Button(modifier = Modifier.padding(16.dp), onClick = { setShow(false) }) {
Text(text = "OK")
}
},
onCloseRequest = { setShow(false) }
)
} else {
return
}
}
henrikhorbovyi
06/04/2020, 6:40 PMvalue
property. It worked for me 🤔Zach Klippenstein (he/him) [MOD]
06/04/2020, 6:41 PMpavi2410
06/04/2020, 6:42 PMhenrikhorbovyi
06/04/2020, 6:43 PMpavi2410
06/04/2020, 6:52 PM@Composable
private fun ExitDialog() {
val show = state { true }
if (show.value) {
AlertDialog(
text = {
Text("Do you want to really quit???")
},
confirmButton = {
Button(modifier = Modifier.padding(16.dp), onClick = { show.value = false }) {
Text(text = "OK")
}
},
onCloseRequest = { show.value = false }
)
}
}
This still doesn't work for me.
@henrikhorbovyi I see that in your code, the initial value for the alertIsVisible state is false. I wonder how it is set to true in order to show AlertDialog?henrikhorbovyi
06/04/2020, 6:53 PMstate
pavi2410
06/04/2020, 6:54 PMhenrikhorbovyi
06/04/2020, 6:55 PMpavi2410
06/04/2020, 7:01 PM@Composable
fun Navigator(isBackPressed: MutableState<Boolean>) {
val (currentScreen, setCurrentScreen) = state { Screen.Home }
if (isBackPressed.value) {
if (currentScreen == Screen.Home) {
ExitDialog()
} else {
setCurrentScreen(Screen.Home)
}
isBackPressed.value = false
}
when (currentScreen) {
Screen.Home -> Home(setCurrentScreen)
Screen.ListScroller -> ListScroller()
Screen.MyScreen -> MyScreen("Android Operating System")
Screen.MarkDownParser -> MarkDownParser()
}
}
Zach Klippenstein (he/him) [MOD]
06/05/2020, 3:07 PM