run
code (show snackbar)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ComposeSnackBarTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Screen()
}
}
}
}
}
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
@Composable
fun Screen() {
val scaffoldState = rememberScaffoldState()
val coroutineScope = rememberCoroutineScope()
Scaffold(scaffoldState = scaffoldState) {
Column(
Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Button(onClick = {
coroutineScope.launch {
showSnackBar(scaffoldState)
}
}) {
Text("show SnackBar")
}
}
}
}
suspend fun showSnackBar(
scaffoldState: ScaffoldState,
message: String = "show Message",
actionLabel: String? = "OK",
duration: SnackbarDuration = SnackbarDuration.Short
) {
scaffoldState.snackbarHostState.showSnackbar(
message = message,
actionLabel = actionLabel,
duration,
).let {
when (it) {
SnackbarResult.Dismissed -> Log.d("SNACK BAR", "스낵바 닫아짐")
SnackbarResult.ActionPerformed -> Log.d("SNACK BAR", "MYSnackBar: 스낵바 확인 버튼 클릭")
}
}
}
code (dismiss snackbar)
val scaffoldState = rememberScaffoldState()
val coroutineScope = rememberCoroutineScope()
...
Button(onClick = {
coroutineScope.launch {
scaffoldState.snackbarHostState.currentSnackbarData?.dismiss()
}
}) {
Text("close SnackBar")
}