Android/Jetpack Compose

Jetpack Compose AlertDialog

loppav6 2022. 10. 25. 15:13

기존에 Dialog를 사용하려면

Dialog 클래스 생성 AlertDialog.Builder 사용, DialogFragment 사용 등 괜시리 복잡하다.

Compose는 기존에 복잡한 UI 구조를 간단하게 만들어 사용할 수 있고 직관적이고 어렵지 않아서 좋다.

 

최초 Composition 발생 시 AlertDialog도 로딩된다.

State객체를 활용하여 AlertDialog를 보여줄지 말지 결정하면 된다.

소스는 직관적이라 따로 리딩할 것은 없고, 참고사항으로 onDismissRequest는 다이얼로그 외부영역 터치 시 동작하는 부분이다. 외부 터치 시 닫고 싶으면 State객체를 조작하면 된다.

 

@Composable
fun MainView() {
    Column {
        val showDialog = remember { mutableStateOf(false) }
        Button(onClick = { showDialog.value = true }) {
            Text(text = "AlertDialog 호출")
        }
        if (showDialog.value) {
            AlertDialog(onDismissRequest = {
                showDialog.value = false
            },
                confirmButton = {
                    Button(onClick = { showDialog.value = false }) {
                        Text(text = "확인")
                    }
                },
                title = {
                    Text(text = "타이틀")
                },
                text = {
                    Text(text = "내용입니다.")
                },
                dismissButton = {
                    Button(onClick = { showDialog.value = false }) {
                        Text(text = "취소")
                    }
                }
            )
        }
    }
}