当前位置: 首页 > news >正文

Android Compose 开发 界面间的跳转(Router)

1.添加库

//project build.gradle.kts pluginskotlin("plugin.serialization") version "2.1.0"//app build.gradle.kts pluginskotlin("plugin.serialization")//app build.gradle.kts dependenciesimplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0")

2.创建Router

@Serializable
sealed class Route {@Serializabledata object Splash: Route()@Serializabledata object Dashboard:Route()@Serializabledata class Product(val categoryId:Int, val title: String):Route()@Serializabledata class Detail(val id:Int): Route()@Serializabledata object Cart:Route()
}

3.创建@Composable App(),定义跳转位置

@Composable
fun App(modifier: Modifier = Modifier) {val navController = rememberNavController()NavHost(navController = navController,startDestination = Route.Splash) {//欢迎屏幕使用的跳转composable<Route.Splash> {SplashScreen {navController.navigate(it) {popUpTo<Route.Splash> {inclusive = true}launchSingleTop = true}}}composable<Route.Dashboard> {DashboardScreen(navigateToRoute = {navController.navigate(it)})}composable<Route.Product> {ProductScreen(params = it.toRoute(),onBackPress = {navController.navigateUp()},navigateToRoute = {navController.navigate(it)})}composable<Route.Detail> {DetailScreen(upPress = {navController.navigateUp()},param = it.toRoute(),navigateToRout = {navController.navigate(it)})}composable<Route.Cart> {CartScreen(upPress = {navController.navigateUp()})}}
}

4.各窗口的定义

@Composable
fun SplashScreen(modifier: Modifier = Modifier,navigatToRouter:(Route)-> Unit) {}@Composable
fun DetailScreen(modifier: Modifier = Modifier,isPreview: Boolean = false,param: Route.Detail,upPress:()->Unit,navigateToRout:(Route)->Unit
) {}@Composable
fun DashboardScreen(isPreview: Boolean = false,navigateToRoute:(Route)->Unit,) {}@Composable
fun CartScreen(modifier: Modifier = Modifier,isPreview: Boolean = false,upPress:()->Unit
) {}@Composable
fun ProductScreen(modifier: Modifier = Modifier,params: Route.Product,isPreview: Boolean = false,onBackPress:()->Unit,navigateToRoute:(Route)-> Unit
) {

http://www.dtcms.com/a/390480.html

相关文章:

  • unity(C#/cs)请求 python django后端服务器预制体渲染 scroll list 视频列表
  • 《Linux 指令实战进阶:从终端新手到 shell 驾驭者的技术跃迁(第三篇)》
  • 临床AI产品化全流程研究:环境聆听、在环校验与可追溯系统的多技术融合实践(下)
  • Croe 11.0 学习笔记:1.5 草绘
  • Hadoop 1.x 与 2.x 版本对比:架构演进与核心差异解析
  • 【5/20】Express.js 基础:构建 RESTful API,实现用户数据端点
  • SmartX 榫卯企业云平台+ StarRocks 大数据联合解决方案
  • CodeX 新王已来:从技术原理到工程实践,AI 如何重构编程全流程
  • 智慧赋能:King‘s Biobank 重构生物样本管理新范式
  • Chromium 138 编译指南 Ubuntu 篇:环境配置与基础准备(一)
  • 知识库新增三方应用AI问答,新增标签管理,集成Excalidraw,重构全文检索,zyplayer-doc 2.5.4 发布啦!
  • JupyterLab部署及使用
  • 本地连接服务器使用jupyter
  • 泰迪智能科技分享数据挖掘定义、主要方法、预处理、应用领域
  • (vue)vue2实现导入excel文件功能
  • 【C语言数据结构】第1章:绪论
  • Python自动化办公2.0全能实战:从Excel到BI大屏,从OCR到机器学习,一站式提升办公效率100倍
  • 第十四届蓝桥杯青少组C++选拔赛[2022.11.27]第二部分编程题(3、业务办理时间)
  • 微服务-网关gateway理论与实战
  • 吴恩达机器学习笔记week1-2(线性回归模型及Sklearn的使用)
  • 11.2.4 聊天记录拉取设计与实现
  • 系统性学习数据结构-第五讲-排序
  • 编程的本质,到 AI 编程,再到 Vibe Coding
  • 自定义hadoop的单节点mapreduce
  • C++——面向对象
  • Java 生态监控体系实战:Prometheus+Grafana+SkyWalking 整合全指南(二)
  • One-Rec semantic-ID表征
  • HTML HTML基础(5)
  • EasyDSS视频推拉流技术如何实现无人机高清推流与超低延迟直播?
  • 音视频学习(六十六):使用ffmpeg api将实时的264、265裸流封装为fmp4