作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Jetpack Compose 中显示带有按钮 onclick 的 snackbar
我试过这个
Button(onClick = {
Snackbar(action = {}) {
Text("hello")
}
}
但是 AS 说“@Composable 调用只能在 @Composable 函数的上下文中发生”
最佳答案
你需要两件事:
SnackbarHostState
- 它将管理您的 Snackbar
的状态ScaffoldState
获得)CoroutineScope
- 负责showing
您的 Snackbar
@Composable
fun SnackbarDemo() {
val scaffoldState = rememberScaffoldState() // this contains the `SnackbarHostState`
val coroutineScope = rememberCoroutineScope()
Scaffold(
modifier = Modifier,
scaffoldState = scaffoldState // attaching `scaffoldState` to the `Scaffold`
) {
Button(
onClick = {
coroutineScope.launch { // using the `coroutineScope` to `launch` showing the snackbar
// taking the `snackbarHostState` from the attached `scaffoldState`
val snackbarResult = scaffoldState.snackbarHostState.showSnackbar(
message = "This is your message",
actionLabel = "Do something."
)
when (snackbarResult) {
Dismissed -> Log.d("SnackbarDemo", "Dismissed")
ActionPerformed -> Log.d("SnackbarDemo", "Snackbar's button clicked")
}
}
}
) {
Text(text = "A button that shows a Snackbar")
}
}
}
关于android - 如何在 Jetpack Compose 中通过单击按钮显示 snackbar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68909340/
我是一名优秀的程序员,十分优秀!