Tal*_*own 7 android snackbar android-jetpack-compose android-jetpack-compose-material3 material3
我开始学习 Jetpack Compose,如何使用 Material3 依赖项实现一个简单的小吃栏看起来令人困惑。
文档显示我需要一个脚手架,并且它需要带有填充的内容(?)。我需要将屏幕可组合放在 lambda 脚手架中吗?如何将消息文本传递到 Snackbar?我有一个简单的流收集器,用于来自视图模型的事件,我想将错误文本传递到小吃栏。
Test()
LaunchedEffect(Unit) {
viewModel.loginEvent.collect {
when (it) {
is LoginViewModel.LoginEvent.Error -> {
// show snackbar with it.error
}
is LoginViewModel.LoginEvent.Success -> {
//
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
@Composable
fun Test() {
Box(modifier = Modifier.fillMaxSize()) {
//my composable screen
}
Run Code Online (Sandbox Code Playgroud)
您可以使用scaffoldHostState在脚手架内显示小吃栏,是的,您应该使用scaffoldPadding作为topAppBar、navigationBar等的填充...
你能试试这个吗?
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Screen() {
val snackbarHostState = remember { SnackbarHostState() }
val localCoroutineScope = rememberCoroutineScope()
LaunchedEffect(Unit) {
viewModel.loginEvent.collect {
when (it) {
is LoginViewModel.LoginEvent.Error -> {
// show snackbar with it.error
localCoroutineScope.launch {
snackbarHostState.showSnackbar(
message = "Error message"
)
}
}
// ...
}
}
}
Scaffold(
snackbarHost = { SnackbarHost(snackbarHostState) }
) { scaffoldPadding ->
Box(
modifier = Modifier
.padding(scaffoldPadding)
.fillMaxSize()
) {
// your composables ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3618 次 |
| 最近记录: |