🤖 Compose

[Compose] Snackbar

콩드로이드 2025. 1. 7. 19:36

SnackbarHost

 - Snackbar는 직접 쓰지 않고 SnackbarHost를 사용해야한다  -> SnackbarHostState를 사용하여 Snackbar의 상태를 관리

 

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

    val snackbarHostState = remember { SnackbarHostState() }
    val coroutineScope = rememberCoroutineScope()


    Scaffold(snackbarHost = { SnackbarHost(snackbarHostState) },) { padding ->
        Button(onClick = {
            counter++
            coroutineScope.launch {
                snackbarHostState.showSnackbar(
                    message = "Hello, Snackbar! count = $counter",
                    actionLabel = "close",
                    duration = SnackbarDuration.Short)
            }
        }, modifier = Modifier.padding(padding)) {
            Text("더하기")
        }
    }
}

- SnackbarHostState: remember { SnackbarHostState() }를 사용하여 Snackbar의 상태 관리
- Scaffold: Scaffold를 사용하여 기본 레이아웃을 설정하고, snackbarHost 매개변수에 SnackbarHost(snackbarHostState)를 전달

 

CoroutineScope내에서 실행하는 이유 

: Snackbar의 showSnackbar 메서드는 suspend 함수로 정의됨 -> Snackbar는 CoroutineScope 내에서 실행되어야 한다 

'🤖 Compose' 카테고리의 다른 글

[Compose] Animation  (0) 2025.01.08
[Compose] State, StateHoisting  (0) 2025.01.07
[Compose] ConstraintLayout, ConstraintSet  (0) 2025.01.07
[Compose] Recomposition  (0) 2025.01.06
[Compose] scaffold  (0) 2025.01.06