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 |