首页 > 其他分享 >[Jetpack Compose] popUpTo 的一些理解

[Jetpack Compose] popUpTo 的一些理解

时间:2022-09-24 17:24:46浏览次数:81  
标签:返回 Compose friendslist Jetpack destination back home popUpTo 页面

开发应用时遇到一个需求:无论处于哪个页面,按返回键时都弹出退出应用的提示。
我用了 BackHandler 处理返回事件,发现只有处于主页时才可触发回调,于是思考应该是导航相关的问题。
翻阅谷歌开发文档,看到了以下内容:

// Pop everything up to the "home" destination off the back stack before
// navigating to the "friendslist" destination
navController.navigate("friendslist") {
    popUpTo("home")
}

// Pop everything up to and including the "home" destination off
// the back stack before navigating to the "friendslist" destination
navController.navigate("friendslist") {
    popUpTo("home") { inclusive = true }
}

// Navigate to the "search” destination only if we’re not already on
// the "search" destination, avoiding multiple copies on the top of the
// back stack
navController.navigate("search") {
    launchSingleTop = true
}

我们来看看第一行注释:

Pop everything up to the "home" destination off the back stack before navigating to the "friendslist" destination

其译文为:在导航到"friendslist"页面之前,把在返回堆栈中所有处于"home"页面之上的项弹出
这句话意思就是,当导航到“friendlist”页面时,此时再按返回键,将返回到“home”页面,无论其中我跳转到其他页面多少次,只要最终我停留在“friendlist”页面,那我返回就一定是返回到“home”页面的。看到这里,我的问题也差不多解决了。
我们再看第7行注释,就可以知道加上inclusive = true就可以清空返回堆栈,那么此时,我再按返回,因为返回堆栈里已经没东西了,我的回调函数就可以成功触发了。

好吧,这个方法并没有解决,也不知道为啥,不过最终我把函数的参数id改成了0,解决了。

标签:返回,Compose,friendslist,Jetpack,destination,back,home,popUpTo,页面
From: https://www.cnblogs.com/thisDart/p/16726026.html

相关文章

  • [Jetpack Compose] 记录一下实现状态栏导航栏透明、应用界面可覆盖两栏、深色浅色模式
    valcolorScheme=when{dynamicColor&&Build.VERSION.SDK_INT>=Build.VERSION_CODES.S->{valcontext=LocalContext.currentif(darkThe......
  • Compose控件占满剩余空间
    Row(Modifier.fillMaxWidth().height(30.dp)){Icon(Icons.Filled.Add,"",Modifier.size(20.dp))Text("Text",Modifier.weight(1f))/......
  • fabric compose文件解读(peer篇)
    peer是fabric中的基础单元,主要负责背书,验证交易合法性,保存区块链数据,查询数据。peer与orderer配合完成区块链的全部功能,orderer可以比作是管理员,peer属于是干货的员工,可以......
  • 创建 Docker Compose 文件
    DockerCompose: 将多个Docker映像作为一个单元一起生成,然后部署该单元。DockerCompose文件是一个YAML文件,用于将多个docker容器组合在一起以进行生成和部署。......
  • docker compose启动常用服务
    MySQLversion:'3.1'services:mysql:#服务的名称restart:always#代表只要docker启动,那么这个容器就跟着一起启动image:daocloud.io/library/mysql:......
  • fabric compose文件解读(Orderer篇)
    orderer在fabric中的作用是排序,另外orderer有点像是管理节点一样,通道之类的都是在orderer的基础之上建立的,有点像比特币,以太坊上面的全节点一样,不过责任比全节点少很多,甚至......
  • 安装docker compose
    curl-Lhttps://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-uname-s-uname-m>/usr/local/bin/docker-composesudochmod+x/usr/loc......
  • Docker基础知识 (12) - 使用 Docker-compose 部署 Nginx + Php/Laravel + MariaDB 项
    Laravel是一套简洁、优雅的PHPWeb开发框架(PHPWebFramework)。Laravel:https://laravel.com/LaravelGitHub:https://github.com/laravel1.部署环境   IP......
  • composer 切换国内源
    1.全局换源#禁用https源地址检查命令composerconfig-gsecure-httpfalse#修改镜像源composerconfig-grepo.packagistcomposerhttps://mirrors.aliyun.com/c......
  • docker-compose学习随笔
    DockerCompose官方介绍compose是一个定义、运行多个容器的工具YAMLfile配置文件。Composeisatoolfordefiningandrunningmulti-containerDockerapplicati......