[英]Dialog in Jetpack Compose
我是 Jetpack Compose 的新手。 我剛剛在 Jetpack Compose 中實現了一個AlertDialog
。 我不清楚 Dialog show 和 dismiss 過程。 這是示例代碼:
@Composable
fun CreateAlertDialog() {
Column {
val openDialog = remember { mutableStateOf(false) }
Button(
onClick = {
openDialog.value = true
},
modifier = Modifier
.padding(16.dp)
.fillMaxWidth()
) {
Text(text = "Open Dialog")
}
if (openDialog.value){
AlertDialog(
onDismissRequest = {
openDialog.value = false
},
title = {
Text(text = "Dialog Title")
},
text = {
Text(text = "Text content")
},
confirmButton = {
Button(
onClick = {
openDialog.value = false
}
) {
Text(text = "Ok")
}
},
dismissButton = {
Button(
onClick = {
openDialog.value = false
}
) {
Text(text = "Cancel")
}
},
modifier = Modifier.padding(start = 32.dp, end = 32.dp)
)
}
}
}
這很好用,但我不清楚這里是如何取消對話的。 對話框基於MutableState
顯示
當openDialog.value
為 true 時顯示對話框。 單擊Button
后會發生什么? 當單擊Button
時, openDialog.value
變為false
並關閉dialog
。
對話關閉代碼在哪里執行?
這個state是怎么處理的?
任何人都可以解釋這對我有幫助。提前致謝。
對話關閉代碼在哪里執行? --> 只要你點擊按鈕, openDialog
的值就會改變。 將為您的可組合項 function 觸發重組,並且 UI 將被重繪,因此您的對話框可見性將發生變化。 因此,當openDialog
的值為 false 時,將跳過對話框代碼。 請檢查這個 -> https://developer.android.com/jetpack/compose/mental-model#recomposition
這個state是怎么處理的? --> State 通常用remember
和mutableState
處理。 remember
,您可以將 object 的值保留在 memory 中,以防重組。 而mutableState
存儲值,並且可以在值更改時觸發重組。
以你的function為例。 單擊按鈕並且openDialog
的值為 true。 這將導致重組。 現在,當通過重組再次調用CreateAlertDialog()
時, openDialog
的值將保持為真,因為它被包裝在remember{}
中。 現在對話框將可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.