如何在 Jetpack Compose 中设置双击退出?

Rez*_*ati 6 kotlin android-jetpack android-jetpack-compose

YouTube 上有一些关于如何在 XML android 中设置双后按退出的教程,但大多数都是 JAVA 的,没有一个是 Jetpack Compose 的。

那么我们如何在 Jetpack Compose 中设置双后按呢?

我的意思是,如果我们确定要退出,则在 Toast 中要求我们再次按回键。感谢帮助

Thr*_*ian 10

此示例在第一次触摸时显示 Toast,并等待 2 秒再次触摸以退出应用程序,否则返回到空闲状态。

sealed class BackPress {
    object Idle : BackPress()
    object InitialTouch : BackPress()
}

@Composable
private fun BackPressSample() {
    var showToast by remember { mutableStateOf(false) }

    var backPressState by remember { mutableStateOf<BackPress>(BackPress.Idle) }
    val context = LocalContext.current

    if(showToast){
        Toast.makeText(context, "Press again to exit", Toast.LENGTH_SHORT).show()
        showToast= false
    }


    LaunchedEffect(key1 = backPressState) {
        if (backPressState == BackPress.InitialTouch) {
            delay(2000)
            backPressState = BackPress.Idle
        }
    }

    BackHandler(backPressState == BackPress.Idle) {
        backPressState = BackPress.InitialTouch
        showToast = true
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 您可以设置封装函数的可见性。如果您只想从声明此函数的类中调用它,则它可以是私有的。你可以不设置可见性修饰符,如果你需要从多个文件调用,kotlin 默认使用 public。我没有注意它的可见性,但由于习惯,我尝试将任何内容设置为私有,除非需要更多可见性 (2认同)