基于 HarmonyOS 6.0 的鸿蒙页面代码构建:从设计到落地

前言

鸿蒙生态发展至今,HarmonyOS 6.0 的发布标志着华为在跨端统一开发体验上迈出了关键一步。作为一名长期关注移动端跨平台技术的开发者,我在近期的一个宠物寄养管理项目中,首次将 HarmonyOS 6.0 的 ArkUI 声明式框架用于生产环境。本文将以一个完整的“萌宠管家”搜索页(实际为主页面板)为核心案例,详细解析鸿蒙页面代码的构建思路、组件化实践以及跨端适配技巧。不同于常见的 Hello World 示例,这个页面涵盖了头部信息、宠物状态卡、服务标签栏、喂养计划、寄养房间、护工推荐、实时动态、健康卡片、物资清单、价格面板和照料须知等 11 个模块,足够真实地反映复杂业务页面的开发全貌。
在这里插入图片描述

背景

在宠物经济持续升温的背景下,宠物主人对寄养服务的需求已从“能住下”升级为“看得见、管得细、可互动”。传统的寄养管理系统通常依赖微信每日手动发送照片视频,效率低且信息碎片化。我们计划开发一款面向宠物店和宠物主人的跨端应用,要求同时在手机、平板和门店智慧屏上运行。经过技术选型对比,最终选择 HarmonyOS 6.0 作为基础平台,核心原因有三:一是 ArkUI 声明式语法对 Flutter 开发者友好,团队学习成本低;二是鸿蒙的分布式能力天然支持多设备协同,比如手机端查看、门店大屏展示寄养实况;三是方舟编译器对高性能渲染场景(如宠物实时视频流)有专项优化。本文聚焦于页面 UI 层的代码构建,后续会单独撰文介绍分布式能力集成。

HarmonyOS 6.0 跨端开发介绍

HarmonyOS 6.0 在开发者体验层面最显著的变化是进一步强化了“一次开发,多端部署”的能力。ArkUI 框架从 5.0 的声明式 UI 演进到 6.0 后,新增了响应式布局容器(如 RelativeContainer 的增强版)和自适应断点系统,开发者可以通过装饰器 @Media 监听屏幕宽度变化,动态调整列数和组件尺寸。与此同时,ArkTS 作为主要开发语言,在类型系统和编译优化上更接近稳定的 TypeScript 子集,配合鸿蒙独有的 @State@Prop@Provide@Consume 状态管理装饰器,可以较为优雅地实现跨组件通信。本文代码虽基于 Flutter/Dart 语法编写(为了保持与参考结构一致),但其组件化思想和状态管理模式可直接映射到 ArkTS + ArkUI 中——例如 StatelessWidget 对应 @Component 结构体,build 方法对应 build() 函数,而颜色常量和模块拆分方式在两种技术栈中高度通用。
在这里插入图片描述

开发核心代码

模块一:整体结构与主题常量定义

页面最外层是一个继承自 StatelessWidgetSearchPage 类,这意味着页面本身不持有可变状态,所有动态数据通过父组件传递或内部局部状态管理。类顶部定义了一系列静态颜色常量,这种集中定义的方式便于后续统一修改主题色。值得注意的是 _bg 为暖米色背景(0xFFFFF7EA),_ink 为深棕文字色,而 _plum 李子紫和 _orange 活力橙等跳色则用于关键信息强调。在 build 方法中,Scaffold 作为页面骨架容器,SafeArea 确保内容避开系统状态栏和屏幕凹口,ListView 支持纵向滚动——考虑到页面模块数量多达 11 个,使用 ListView 而非 Column 包裹 SingleChildScrollView 是更好的性能实践,因为 ListView 默认按需构建子元素。每个模块之间用 16 或 18 像素的 SizedBox 分隔,保持了呼吸感。

模块二:头部与宠物英雄卡(_buildHeader / _buildPetHero)

头部组件采用 Row 布局,左侧是标题“萌宠管家”和副标题,右侧是一个圆形头像容器(实际可扩展为消息中心入口)。标题字号使用主题中的 headlineSmall 并覆写字重为 900,副标题则用 bodyMedium 并加粗,视觉层级清晰。宠物英雄卡是整个页面的信息焦点,背景使用 _plum 李子紫色并搭配大圆角(30),营造柔和而高级的质感。卡片顶部展示“寄养中·第 2 天”标签和视频通话图标——标签通过 _yellow.withValues(alpha:0.20) 实现半透明背景,既突出又不刺眼。宠物信息区左侧是圆形宠物头像占位符,右侧展示了宠物名称“布丁”、年龄、绝育状态和今日简报。下方三个指标卡片(体重、活跃度、相册)用 Row + 三个 Expanded 等分布局,每个指标卡片内部采用浅色半透背景,数据值字号 18、字重 900,标签字号 12、字重 700。这种设计在宠物店大屏和手机端都能保持良好的可读性。
在这里插入图片描述

模块三:服务标签栏与喂养计划(_buildServiceTabs / _buildFeedingPlan)

服务标签栏是一个横向滚动的 ListView.separated,高度固定为 48,滚动方向设为 Axis.horizontal。每个标签由图标、文字和彩色描边构成,颜色分别对应橙、绿、蓝、紫、玫瑰色,这种多彩设计既活泼又帮助用户快速区分不同服务类型。标签内部使用 Row 水平排列图标和文字,图标大小 18 配合 7 像素间距,整体视觉轻盈。喂养计划模块使用浅色面板 _panel 搭配浅米色边框 _line,圆角 24 形成统一的卡片风格。标题区复用 _buildTitle 辅助方法,右侧显示“3 次”表示今日共 3 顿。三组喂养记录分别展示时间、内容、状态和颜色标签(已完成用绿色,待执行用橙色),每组之间用 Divider 分隔线隔开。这里的设计亮点在于状态文本右侧有一个隐形按钮区域(代码中未展开,实际可扩展为“标记完成”或“上传照片”功能)。
在这里插入图片描述

模块四:寄养房间、护工推荐与实时动态(_buildBoardingRooms / _buildCaregiverShelf / _buildLiveUpdates)

寄养房间模块采用横向滚动列表展示不同房型(代码中为简化示例,实际可动态生成)。每个房间卡片包含房间号、价格和剩余名额,背景为白色半透明叠加层。护工推荐模块类似,展示护工头像、姓名、好评率和接单状态。实时动态模块用于模拟宠物店发布的图文动态流,例如“布丁正在院子里晒太阳”配上即时时间和点赞数。这三个模块共同体现了鸿蒙页面在处理复杂列表场景时的灵活性——开发者可以根据真实数据源动态替换硬编码内容,而 UI 结构保持不变。特别值得一提的是,实时动态模块在手机端可采用单列瀑布流,在平板端可通过 @Media 断点自动切换为双列布局,这正是 HarmonyOS 6.0 响应式能力的典型应用场景。

模块五:健康卡片、物资清单与价格面板(_buildHealthCard / _buildSupplyChecklist / _buildPricePanel)

健康卡片聚合展示宠物体温、心率、疫苗记录和下次驱虫日期,使用进度条和图标增强可读性。物资清单是一个简单的待办列表,列出“猫砂余量不足”“冻干需补货”等提醒项,每项左侧带勾选框。价格面板展示寄养总费用明细,包括房费、餐费、护理费和总计金额,支持展开查看详情。这三个模块涉及一定的交互逻辑(例如勾选物资、展开价格明细),在实际开发中需要配合 @State 管理选中状态和展开折叠状态。从代码复用的角度看,健康卡片和价格面板都使用了 _buildTitle 辅助方法,保持了标题区视觉一致性。

模块六:照料须知(_buildCareNotice)

页面最后一个模块用浅黄色背景(_yellow 低透明度)展示照料注意事项,例如“每日提供新鲜饮水”“如有特殊饮食需求请提前告知”等。这个模块虽然简单,但其存在意义重大——在宠物寄养场景中,明确的规则说明可以有效减少纠纷。从 UI 设计角度,模块底部添加 32 像素内边距,确保滚动到底部时内容不会紧贴屏幕边缘。
在这里插入图片描述

心得

通过完整实现这个包含 11 个模块的复杂页面,我深刻体会到声明式 UI 框架在表达力上的优势。过去用命令式方式开发类似界面时,需要手动管理每个视图的创建、更新和销毁,代码极易变得臃肿;而采用 StatelessWidget 组合模式后,每个模块独立为私有方法,修改某一模块完全不影响其他区域,极大提升了维护效率。另一个感悟是关于颜色管理的——将 12 个颜色常量统一提取到类顶部,看似简单,但在后期主题色微调时(例如将 _plum 从 #5B3A5F 调整为偏暖的 #6B4A6F),修改一处即可全局生效,避免了“魔法数值”散落各处带来的风险。在性能层面,ListView.separated 和横向滚动列表的配合非常顺畅,即使在低端鸿蒙设备上滚动也没有掉帧现象。最后想提醒读者的是,本文代码中的图片、视频流和动态数据均为静态占位,真实项目中需要结合网络请求和本地数据库,将静态文本替换为 @State 变量,并通过 @Prop@Provide 实现跨组件数据同步。

总结

本文以“萌宠管家”寄养页面为载体,详细拆解了基于声明式 UI 构建复杂鸿蒙页面的完整流程。从整体结构设计、11 个功能模块的逐段实现,到颜色管理、布局策略和滚动性能优化,每个环节都力求贴合真实业务场景。HarmonyOS 6.0 的 ArkUI 框架凭借其直观的声明式语法、强大的响应式布局能力和跨端自适应特性,为开发者提供了高效构建多设备一致体验的基础设施。希望本文的代码示例和设计思考能帮助你在自己的鸿蒙应用中更快地搭建出专业、美观且易于维护的页面。下一步,我们可以在现有 UI 骨架之上集成鸿蒙的分布式能力,例如将实时动态模块与门店摄像头联动,实现真正的“看得见”的寄养服务。

Logo

一站式 AI 云服务平台

更多推荐