【问题标题】:jetpack compose Scaffold Possible to override the standard durations of SnackBar?jetpack compose Scaffold 是否可以覆盖 SnackBar 的标准持续时间?
【发布时间】:2022-08-04 02:06:21
【问题描述】:
如何覆盖 Scaffold SnackBar 的标准持续时间以在 MS 中应用我自己的持续时间。我看不出有什么办法
is EventsToAddAlbumScreen.ShowSnackbarEventToAddAlbumScreen -> scaffoldState.snackbarHostState.showSnackbar(
message = event.message,
duration = SnackbarDuration.Short // <-- want to change this to 500ms for example
)
标签:
kotlin
android-jetpack-compose
android-snackbar
scaffold
【解决方案1】:
您可以使用SnackbarDuration.Indefinite 并在必要的延迟后手动取消它:
LaunchedEffect(Unit) {
val job = launch {
scaffoldState.snackbarHostState.showSnackbar("Hi", duration = SnackbarDuration.Indefinite)
}
delay(500)
job.cancel()
}
【解决方案2】:
你可以使用这个技巧:
val scope = rememberCoroutineScope()
val snackBarMessage = stringResource(id = R.string.snackbar_message)
scope.launch {
val job = scope.launch {
snackbarHostState.showSnackbar(
message = snackBarMessage,
duration = SnackbarDuration.Indefinite,
)
}
delay(500)
job.cancel()
}