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")
}
profile
𝙸 𝚊𝚖 𝚊 𝚌𝚞𝚛𝚒𝚘𝚞𝚜 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚠𝚑𝚘 𝚎𝚗𝚓𝚘𝚢𝚜 𝚍𝚎𝚏𝚒𝚗𝚒𝚗𝚐 𝚊 𝚙𝚛𝚘𝚋𝚕𝚎𝚖. 🇰🇷👩🏻‍💻

0개의 댓글