【听见课堂 HarmonyOS NEXT 实战系列 05】12 个页面如何不迷路:RouteId、导航外壳与响应式路由
【听见课堂 HarmonyOS NEXT 实战系列 05】12 个页面如何不迷路RouteId、导航外壳与响应式路由当 HarmonyOS NEXT 应用只有首页和设置页时在点击事件里直接写一个页面字符串似乎没有问题。随着页面增加到 12 个手机使用底部导航、平板使用侧栏、部分页面又需要沉浸式布局分散路由字符串就会迅速失控。听见课堂把页面标识集中到common-core由entry的页面外壳决定手机、平板和 2in1 如何呈现同一组路由。这里不讨论“动画够不够炫”而是关注导航语义如何保持稳定。一、12 个页面先有稳定身份再有显示文案项目使用RouteId表达页面身份并维护对应的PAGE_METAexportenumRouteId{PRIVACYP01,HOMEP02,COURSE_EDITP03,LIVE_CLASSP04,SCANP05,OCR_REVIEWP06,REVIEWP07,TASK_CONFIRMP08,TASK_CENTERP09,HISTORYP10,SETTINGSP11,STATE_GALLERYP12,SIGN_LANGUAGES01}页面显示名称可以从“任务”改成“任务中心”但P08不应该随文案变化。稳定 key 使偏好恢复、埋点、测试和跨模块参数都能指向同一页面身份。PAGE_META统一保存 RouteId、完整标题和短标题手机底栏的五个图标则由页面外壳单独映射。页面层不再重复维护同一组标题字符串也更容易检查是否存在没有入口的孤立页面。二、统一的navigate处理跨页面副作用听见课堂的页面外壳维护当前路由并通过统一方法切换privatenavigate(route:RouteId):void{if(route!RouteId.LIVE_CLASSthis.currentPageRouteId.LIVE_CLASSthis.liveStateLiveSessionState.LISTENING){this.liveService.pause();}if(route!this.currentPage){this.contentScroller.scrollEdge(Edge.Top);}this.currentPageroute;this.preferences.lastPageroute;PersistenceV2.save(UserPreferences);}这段代码展示了集中导航入口的三个价值离开实时课堂时统一暂停相关会话避免页面不可见后仍占用资源切换页面时将滚动位置复位避免新页面继承上一页的偏移记录最后页面为下次启动恢复提供依据。如果每个按钮都直接修改currentPage这些副作用很容易漏掉。未来接入Navigation或NavPathStack时也可以先保留RouteId语义再替换底层栈实现。三、手机底部导航只放高频主流程紧凑屏幕不适合把 12 个页面全部塞进底部栏。听见课堂在手机上保留五个高频入口首页HOME课堂LIVE_CLASS回顾REVIEW任务TASK_CENTER设置SETTINGS。课程编辑、扫描材料、OCR 复核、手语识别、任务确认、历史记录和状态组件页从主流程进入。这既控制了底部导航数量也让用户能够从“课程—课堂—回顾—任务”形成清晰路径。底部栏的选中状态必须基于稳定RouteId不能基于标题文字。点击已经选中的入口时可以选择滚动到顶部或保持当前位置但行为要统一。四、大屏侧栏可以展示更完整的信息架构当可用宽度达到项目定义的 840vp 断点时页面外壳切换为侧栏布局.onAreaChange((_oldValue:Area,newValue:Area){constwidthNumber(newValue.width)this.isLargewidthAppSizes.LARGE_BREAKPOINT})侧栏拥有更多垂直空间可以展示除隐私页之外的完整页面入口并在右侧保留内容区。这里的关键不是简单把手机底部栏移到左边而是重新分配导航密度手机只展示五个主任务平板/2in1展示更完整的页面集合路由 identity 不变Service 与数据状态也不因外壳变化而重建。响应式切换时要重点测试“宽—窄—宽”往返。用户当前页面不应因为窗口尺寸变化被重置到首页表单草稿也不能无提示丢失。五、沉浸式页面需要独立的外壳策略实时课堂、扫描材料和 OCR 复核分别对应P04、P05、P06。在手机上它们需要更大的内容空间和明确的退出动作因此会采用沉浸式布局隐藏标准底部导航。手语识别作为独立的S01能力页处理。沉浸模式下尤其要处理状态栏与底部安全区相机或麦克风权限被拒绝后的降级返回键和页面内关闭按钮的一致行为页面离开时释放相机、识别会话和定时器横竖屏或分屏变化时预览区域不拉伸变形。“隐藏导航栏”不等于“没有导航”。用户必须始终知道如何退出并且退出动作要经过统一navigate否则资源清理逻辑可能失效。六、隐私页是启动门禁不是普通 Tab项目通过持久化用户偏好决定启动页面未接受隐私说明时进入P01接受后才恢复lastPage。这类门禁不能只靠视觉隐藏主导航还应保证用户无法从其他入口绕过。偏好对象通过PersistenceV2连接constPERSISTED_PREFERENCES:UserPreferencesPersistenceV2.connect(UserPreferences,heard-classroom-preferences,()newUserPreferences())??newUserPreferences();LocalprivatecurrentPage:stringthis.preferences.privacyAccepted?this.preferences.lastPage:RouteId.PRIVACY;恢复最后页面时还要做合法性校验。如果旧版本保存了已经删除的 RouteId应回退到首页而不是渲染空白内容。七、集中路由需要怎样验证12 个页面的导航验证不能只靠逐个点击一次。建议建立路由矩阵验证项重点检查页面可达性每个 RouteId 至少有一个合法入口返回路径详情、编辑、沉浸页能回到正确上级侧栏/底栏一致性同一路由的选中状态和标题一致隐私门禁未同意时不能绕过已同意后可恢复尺寸切换当前页面与草稿态不丢失滚动复位新页面不继承上一页面偏移资源释放离开课堂、相机、手语页后能力停止异常路由未知 key 安全回退并记录错误当前听见课堂采用单页面外壳加集中 RouteId 的方式适合现阶段固定页面集合。若后续需要复杂深链、多层详情栈或跨模块动态页面可以逐步迁移到Navigation/NavPathStack但仍应保留稳定 RouteId 和类型化参数。总结路由设计的目标不是让每个按钮都能跳转而是让页面身份、入口、返回、响应式外壳和生命周期副作用保持一致。听见课堂通过集中式RouteId管理 12 个页面再分别为手机和大屏提供合适的导航密度。下一篇将进入主题系统分析AppColors、AppSizes与极光背景如何避免页面散写颜色和尺寸并支持暗色模式与多设备布局。

相关新闻

macOS 窗口最小化:三种写法的实测对比与可复用脚本

macOS 窗口最小化:三种写法的实测对比与可复用脚本

1. 问题背景在 macOS 上通过 AppleScript 控制窗口时,很多教程推荐两种写法来最小化窗口。但在实际使用中,这两种写法在第三方应用上往往不可靠,甚至直接报错。本文通过源码验证三种最小化方法,给出实测对比结论,并提供…

2026/11/10 22:39:47 阅读更多 →
Android面试核心原理指南:从Handler到Binder,构建完整知识体系

Android面试核心原理指南:从Handler到Binder,构建完整知识体系

2022年7月,我当时正好在准备Android面试,刷了将近一个月八股文,也做了一些笔记整理。这段时间里,Android技术圈其实挺热闹的,Compose开始慢慢普及但还没完全成为主流,Kotlin协程基本是标配了,面…

2026/11/11 16:09:01 阅读更多 →
Android面试八股文冲刺:核心组件、底层原理与高频考点全解析

Android面试八股文冲刺:核心组件、底层原理与高频考点全解析

这是一份来自真实一线的2022年7月Android面试准备笔记,重点攻克“八股文”环节。这个时间点很微妙:金三银四刚过,秋招提前批还没全面铺开,属于一个相对平稳但竞争依旧激烈的窗口期。大家手里的项目经验其实都大差不差,…

2026/10/26 11:18:10 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/10 23:32:01 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/10 23:32:03 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/11 2:31:33 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/11 17:16:37 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/11 17:16:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/10 23:32:10 阅读更多 →

日新闻

周新闻

月新闻