🤖 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 내에서 실행되어야 한다