【问题标题】: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()
      }
      

      【讨论】:

        猜你喜欢
        • 2016-03-01
        • 2021-08-04
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 2018-11-12
        • 2021-10-04
        • 2021-11-01
        • 1970-01-01
        相关资源
        最近更新 更多