Compose - SnackBar

FLUORITE·2025년 1월 17일

안드로이드

목록 보기
10/32


@Composable
fun SnackbarEx() {
    var counter by remember { mutableStateOf(0) }

    // 단계 3: couroutineScope를 만듭시다.
    // `rememberCoroutineScope`를 사용합니다.

    val coroutineScope = rememberCoroutineScope() // 단계 3: couroutineScope를 만듭시다. suspend 함수를 실행하기 위해 사용하는 코루틴 스코프
    // 단계 1: scaffoldState를 만들고 Scaffold에 설정합시다.
    // scaffoldState를 만들기 위해 `rememberScaffoldState`를 사용합니다.
//    val snackbarHostState = remember { SnackbarHostState() }
//    val scaffoldState = rememberScaffoldState(snackbarHostState = snackbarHostState)
    val scaffoldState = rememberScaffoldState()
    Scaffold(scaffoldState = scaffoldState) {
        // 단계 2: "더하기" 버튼을 만들어 봅시다.
        // action에서 counter를 증가시킵시다.



//        LaunchedEffect(scaffoldState.snackbarHostState) {
//            scaffoldState.snackbarHostState.showSnackbar(
//                message = "더하기가 눌렸습니다 ${counter}.",
//                actionLabel = "close",
//                duration = SnackbarDuration.Short
//            )
//        }

        Button(onClick = {
            counter++
            coroutineScope.launch {
                val result = scaffoldState.snackbarHostState.showSnackbar(
                    message = "더하기가 눌렸습니다 ${counter}.",
                    actionLabel = "close",
                    duration = SnackbarDuration.Short
                )
//                when (result){
//                    SnackbarResult.ActionPerformed -> {}
//                    SnackbarResult.Dismissed -> {}
//                } 활용 가능
            }
        }) {
            Text("더하기")
        }
        // 단계 4: 버튼의 onClick에서 `coroutineScope.launch`를
        // 사용합니다.

        // 단계 5: 스낵바를 사용하기 위해 `scaffoldState.snackbarHostState.showSnackbar`
        // 사용합니다.

        // `message`에 카운터를 출력합시다.
        // `actionLabel`를 "닫기"로 지정합시다.
        // `duration`에 `SnackbarDuration.Short`를 사용합니다.


    }
}
profile
모두 이루어져라

0개의 댓글