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

Multiplatform - 使用 Jetpack 组件(ViewModel、Navigation3)

一、概念

二、ViewModel

2.1 添加依赖

[versions] viewModel = "2.9.6" [libraries] jetbrains-viewModel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "viewModel" } //可选(解决桌面端对于默认调度器 Dispatchers.Main.immediate 可能不可用) kotlinx-coroutinesSwing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" }

2.2 使用

在非 JVM 平台上,无法通过类型反射实例化对象。因此在公共代码中,不能直接调用无参数的 viewModel() 函数,每次创建 ViewModel 实例时,至少需提供一个初始化器作为参数。

若仅提供初始化器,库会在底层创建默认工厂。但您也可以实现自己的工厂,并调用公共 viewModel(...) 函数中更显式的重载版本,这与 Jetpack Compose 中的使用方式一致。

@Composable fun Demo( viewModel: MyViewModel = viewModel { MyViewModel() } ) {...}

三、Navigation3

3.1 添加依赖

[versions] navigation3 = "1.0.0-alpha06" navigation3ViewModel = "2.10.0-alpha08" navigation3Adaptive = "1.3.0-alpha04" navigation3Browser = "0.2.0" [libraries] jetbrains-navigation3-ui = { module = "org.jetbrains.androidx.navigation3:navigation3-ui", version.ref = "navigation3" } jetbrains-navigation3-viewModel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "navigation3ViewModel" } //可选(自适应布局) jetbrains-navigation3-adaptive = { module = "org.jetbrains.compose.material3.adaptive:adaptive-navigation3", version.ref = "navigation3Adaptive" } //可选(回退支持web浏览器历史) jetbrains-navigation3-browser = { module = "com.github.terrakok:navigation3-browser", version.ref = "compose-multiplatform-navigation3-browser" }

3.2 使用

@Serializable private data object RouteA : NavKey @Serializable private data class RouteB(val id: String) : NavKey // Creates the required serializing configuration for open polymorphism private val config = SavedStateConfiguration { serializersModule = SerializersModule { polymorphic(NavKey::class) { subclass(RouteA::class, RouteA.serializer()) subclass(RouteB::class, RouteB.serializer()) } } } @Composable fun BasicDslActivity() { // Consumes the serializing configuration val backStack = rememberNavBackStack(config, RouteA) NavDisplay( backStack = backStack, //... ) }
http://www.jsqmd.com/news/344228/

相关文章:

  • 静态 IP 是什么?静态IP的应用场景有哪些?
  • 2026年评价高的电动伸缩雨棚厂家综合实力参考(2026) - 行业平台推荐
  • uni-app—— uni-app 滚轮选择器惯性滚动导致弹框无法关闭的解决方案
  • 【ARM汇编语言基础】-内存访问指令(五)
  • uni-app——uni-app小程序附件上传的文件类型限制问题
  • 2026年评价高的天津地源热泵采暖厂家选择参考建议 - 行业平台推荐
  • 2026年热门的地源热泵优质厂商精选推荐(口碑) - 行业平台推荐
  • 高效做年度工作规划PPT,工具用法全干货指南
  • 共筑鸿蒙PC新纪元:邀您成为生态奠基人
  • 工程机械轴套生产厂家,2026硬核品质赋能工程装备盘点 - 栗子测评
  • 2026年靠谱的高效机房设计口碑推荐 - 行业平台推荐
  • 从冷启动到爆品:AliBoost 如何破解推荐系统“富者愈富”困局
  • Java多线程:synchronized与Lock的优劣对比
  • 开发员工生日祝福工具,录入员工生日,提前一天提醒,生日定制祝福文案,支持一键发送到员工邮箱/微信,提升员工归属感。
  • 2026年质量好的智慧操场跑道/智慧操场跳远仰卧起坐跳绳测试仪热销推荐 - 行业平台推荐
  • 2026年2月山东工业油供应商选型指南:实力解析与权威推荐 - 2026年企业推荐榜
  • 2026安徽太阳能清洗剂除垢剂销售厂家联系选购全攻略 - 2026年企业推荐榜
  • AgentCPM研报生成实测:离线运行+隐私保护的高效方案
  • 2026年初浙江地区多功能提取罐优质服务商综合评测 - 2026年企业推荐榜
  • 2026年靠谱的AI智慧操场体育设备/智慧操场跑道口碑推荐 - 行业平台推荐
  • 2026年阜阳酒店家具定制选购指南与诚信厂家深度解析 - 2026年企业推荐榜
  • 2026武汉光伏储能服务商评测:鑫杰宇新能源领跑榜单 - 2026年企业推荐榜
  • 前瞻2026:安徽减速机制造商综合评估与选型指南 - 2026年企业推荐榜
  • 2026年第一季度武汉糊树脂供应商综合评测与选型指南 - 2026年企业推荐榜
  • 2026年武汉光伏电站服务商综合评测与选购指南 - 2026年企业推荐榜
  • CogVideoX-2b本地体验:无需公网上传的私密创作空间
  • Chord视频时空理解工具YOLOv8集成:实时目标检测应用开发
  • 超越 CRUD:深入 SQLAlchemy ORM 的架构核心与高级模式实践
  • Z-Image模型容器化部署:使用Docker简化安装流程
  • 2026年徐州设备防腐保温工程市场格局深度解析与五强服务商盘点 - 2026年企业推荐榜