[Jetpack Compose] 使用 Snackbar 实现退出应用再确认功能

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DemoFun() {
    var scope = rememberCoroutineScope()
    var snackbarHostState = remember { SnackbarHostState() }
    var showExitHint by remember { mutableStateOf(false) }
    BackHandler(true) {
        if (showExitHint) {
            // 调用 Activity 对象的 finishiAffinity() 方法,
            // 可以关闭当前 Activity 所属的 Activity 栈中所有的 Activity。
            // 如果所有 Activity 都保存在默认栈中,则使用该方法会直接退出程序。
            // (来源:https://blog.csdn.net/xieluoxixi/article/details/53469553)
            finishAffinity()
            return@BackHandler
        }
        // 将 showExitHint 的值设置为 true,表示 Snackbar 已经出现
        showExitHint = true
        scope.launch {
            // 当 Snackbar 消失时,改变 showExitHint 的值
            showExitHint = snackbarHostState.showSnackbar("再按一次以退出") != SnackbarResult.Dismissed
        }
    }
}
posted @ 2022-09-24 20:19  摘叶飞镖  阅读(187)  评论(0编辑  收藏  举报