鸿蒙 ArkTS 实战:Community Medicine Pickup 从社区代买药到社区便民应用完整解析
鸿蒙 ArkTS 实战Community Medicine Pickup 从社区代买药到社区便民应用完整解析前言社区代买药 是一个贴近生活服务场景的鸿蒙 ArkTS 单页应用。它的源码并不复杂却把状态驱动界面、列表循环渲染、条件样式、按钮事件和业务结果即时反馈都放在了一个很清楚的页面里。本文围绕 Community Medicine Pickup 的真实页面内容展开分析它如何把“社区服务人员根据处方照片核对降压药、感冒冲剂和医用棉签并记录配送地址与代买费用。”实现成可交互、可扩展、可复用的鸿蒙应用页面。做生活服务类工具时最重要的不是堆功能而是让用户在一次点击后马上看到业务状态变化。图示说明本文拆解的页面包含业务标题区、服务数据区、状态反馈区和操作按钮区适合用来学习 ArkTS 单页业务建模。一、业务背景与页面目标1.1 场景背景社区服务人员根据处方照片核对降压药、感冒冲剂和医用棉签并记录配送地址与代买费用。这类应用通常出现在社区服务、门店登记、上门服务、本地生活和轻量办公场景中。用户不会长时间停留研究界面而是希望快速确认状态、费用、进度或当前选项。1.2 页面目标页面目标可以拆成三点清楚展示当前业务对象和核心信息。让用户通过点击完成选择、推进或确认。在当前页面实时反馈业务结果。1.3 技术关注点关注点项目体现技术方式状态变化paid、selectedState数据选项meds降压药、感冒冲剂、医用棉签private 数组点击交互按钮、卡片、条目onClick / onChange视觉反馈高亮、进度、金额条件样式二、项目入口与源码结构2.1 页面入口该项目的主要业务集中在 Index 页面中使用Entry标记入口组件使用Component描述可渲染结构。单页应用的好处是路径短适合集中讲清业务闭环。EntryComponentstruct Index{build(){Column(){Text(社区代买药)}}}2.2 单页结构优势对于 社区代买药 这种业务规模单页结构有三个优势状态来源集中点击后变化容易追踪。业务数组靠近渲染逻辑维护成本低。调试时可以直接观察页面刷新结果。2.3 页面模块拆解模块作用典型组件标题区域显示业务名称和摘要Row、Column、Text选项区域展示任务、流程或服务项ForEach、Grid、Stack反馈区域显示费用、进度或状态Text、Circle、Rect操作区域完成确认或推进Button、Toggle三、状态建模3.1 State 字段表字段类型业务含义paidnumber已记录费用默认 68selectednumber当前选中的药品条目这些字段全部参与界面渲染只要字段更新相关文案、颜色、按钮状态或计算结果就会同步变化。3.2 状态声明代码EntryComponentstruct Index{Statepaid:number68;// 已记录费用默认 68Stateselected:number0;// 当前选中的药品条目}3.3 状态粒度设计社区代买药 的状态字段数量较少说明页面没有过度建模。它把真正会变化的内容交给 State把静态选项保留为 private 数组。State 应该服务于界面变化而不是替代所有普通字段。四、业务数据数组4.1 数组内容meds降压药、感冒冲剂、医用棉签数组让页面可以通过循环渲染多个业务选项避免重复写很多结构相似的 Text、Row 或 GridItem。4.2 ForEach 渲染方式ForEach(this.items,(item:string,index:number){Text(item).fontSize(16).fontWeight(FontWeight.Bold).onClick((){this.currentindex})})4.3 索引绑定的价值当前项目大量使用索引来表示“选中哪一项”或“推进到哪一步”。这种方式适合选项数量固定、展示顺序稳定的页面。Text(this.items[this.current]).fontColor(this.currentindex?#FFFFFF:#0F766E)五、页面布局设计5.1 主容器组织页面主容器通常由 Column 或 Row 构成。社区代买药 的布局重点是先给出业务主题再让用户看到可操作区域最后展示结果。Column(){Text(社区代买药)Blank()Button(确认)}.width(100%).height(100%).backgroundColor(#FFFFFF)5.2 信息层级层级展示内容设计目标一级标题、业务对象快速识别页面用途二级时间、备注、说明补充业务上下文三级费用、进度、状态强化当前结果操作确认、推进、新增完成业务动作5.3 主题色策略项目使用#0F766E作为主色常出现在按钮、高亮项和核心数字上。这种颜色策略能让用户快速找到当前可操作区域。Button(主要操作).backgroundColor(#0F766E)六、交互行为解析6.1 主要动作点击药品条目切换 selected记录费用按钮让 paid 增加 5处方照片区域展示已核对状态6.2 项目中的事件代码Text(item).backgroundColor(this.selectedindex?#0F766E:#FFFFFF).onClick((){this.selectedindex})Button(记录费用).onClick((){this.paid5})6.3 交互闭环点击药品条目切换 selected记录费用按钮让 paid 增加 5处方照片区域展示已核对状态点击动作与页面反馈绑定在同一个状态字段上因此用户不需要跳转页面也能立即知道业务是否推进成功。七、核心业务计算7.1 计算表达式paidpaid57.2 计算结果展示在 社区代买药 中计算结果通常直接出现在 Text 组件中比如进度、费用、数量或状态文案。Text(当前结果String(result)).fontSize(22).fontWeight(FontWeight.Bold).fontColor(#0F766E)7.3 封装为方法如果后续业务规则变多可以将计算封装为方法privategetResultText():string{returnString(paid paid 5)}这样可以让 build 方法更短也方便单独调整业务规则。八、ArkTS 组件使用细节8.1 Text 组件Text 用来表达标题、说明、状态、金额和备注。字体大小和颜色变化是生活服务类页面里最基础的视觉层级。Text(社区代买药).fontSize(26).fontWeight(FontWeight.Bold).fontColor(#0F766E)8.2 Button 组件Button 承载明确动作例如确认、推进、新增、记录费用等。一个按钮最好对应一个清楚的业务变化。Button(推进).backgroundColor(#0F766E).onClick((){this.current1})8.3 条件样式条件样式让用户知道当前选中项、完成项或待处理项。.backgroundColor(this.currentindex?#0F766E:#FFFFFF).fontColor(this.currentindex?#FFFFFF:#111827)8.4 Stack 与图形组件部分页面使用 Stack、Circle、Rect 组织视觉区域。它们适合表达照片区域、进度节点、仪表盘或业务卡片。Stack(){Rect().width(100%).height(220).fill(#F8FAFC)Text(业务信息)}九、可维护性分析9.1 字段命名paid、selected 都是直接对应业务含义的字段阅读源码时不需要额外猜测它们控制哪一块界面。9.2 静态数据管理静态数组靠近组件顶部后续新增条目时只需要改数组不需要复制整段 UI。privateitems:string[][选项一,选项二,选项三]9.3 组件拆分时机当页面扩展到多个区域都需要复用样式时可以拆出 builder 方法。BuilderprivateTag(text:string,selected:boolean){Text(text).fontColor(selected?#FFFFFF:#0F766E)}十、调试与验证10.1 操作路径验证调试 社区代买药 时可以按真实业务动作验证打开页面后初始状态是否正确。点击列表、卡片或按钮后状态是否变化。费用、进度或状态文案是否同步刷新。边界条件是否不会越界。10.2 日志定位Button(调试).onClick((){console.info(state changed)})10.3 常见问题表问题可能原因处理方式点击后没有变化字段不是 State将变化字段声明为 State高亮位置不对index 与状态值不匹配检查 ForEach 顺序文案不刷新表达式没有依赖状态让 Text 读取状态字段数字越界递增缺少限制增加 if 判断十一、扩展方向11.1 增加本地缓存对于 社区便民 场景可以保存最近一次选择和业务结果让用户下次打开时继续处理。interfaceLocalSnapshot{selected:numberupdatedAt:string}11.2 增加接口同步当应用接入后台系统时可以把状态字段转换为请求参数。{page:社区代买药,state:paid、selected,scene:社区便民}11.3 增加角色权限生活服务类应用常见多个角色用户、服务人员、管理员。后续可以基于角色控制按钮是否可见。十二、体验优化12.1 点击区域服务登记类页面常在移动场景下使用按钮和卡片的 padding 要足够避免误触。12.2 反馈清晰每次状态变化后页面应该立刻有视觉反馈颜色变化、数字变化、状态文案变化至少要有一种。12.3 边界控制对于递增、推进、完成类操作需要限制最大值。if(this.currentmax){this.current1}十三、完整实现片段13.1 页面骨架EntryComponentstruct Index{Statepaid:number68;Stateselected:number0;build(){Column(){Text(社区代买药)Text(业务类型社区便民)}}}13.2 数据声明// meds降压药、感冒冲剂、医用棉签privateprimaryColor:string#0F766E13.3 事件处理Text(item).backgroundColor(this.selectedindex?#0F766E:#FFFFFF).onClick((){this.selectedindex})Button(记录费用).onClick((){this.paid5})13.4 状态展示Text(状态已更新).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#0F766E)十四、同类页面复用14.1 可复用结构社区代买药 的页面结构可以迁移到很多同类场景先定义业务数组再定义当前状态最后通过按钮推进。14.2 可复用逻辑选项列表通过 ForEach 渲染。当前项通过 number 状态保存。布尔状态用于确认、完成、收款等二值场景。费用或进度通过表达式计算。14.3 可复用样式主题色、卡片圆角、间距和文字层级可以抽成公共常量让多个页面保持一致。十五、工程价值15.1 对初学者的价值这个项目适合练习 ArkTS 的基础语法、声明式 UI、状态刷新和事件绑定。15.2 对业务开发的价值它证明了轻量页面也需要清晰建模。只要状态字段设计合理小页面同样能表达完整业务流程。15.3 对后续扩展的价值后续可以加入数据持久化、远端接口、权限控制、订单编号、服务评价和历史记录让 社区代买药 从演示页面升级为真实工具。总结Community Medicine Pickup 通过简洁的 ArkTS 代码完成了 社区便民 场景的核心交互。页面围绕 paid、selected 建立状态模型围绕 meds降压药、感冒冲剂、医用棉签 组织业务数据再通过按钮和条件样式完成即时反馈。从这个项目可以看到鸿蒙 ArkTS 做轻量生活服务应用非常直接状态定义清楚数组渲染稳定交互动作单一页面反馈及时就能支撑一个可读、可维护、可扩展的业务页面。相关链接HarmonyOS 应用开发指南ArkTS 快速入门ArkUI 声明式开发

相关新闻

C语言30天速通:零基础到项目实战与就业接单指南

C语言30天速通:零基础到项目实战与就业接单指南

这次我们来看一个面向零基础小白的C语言速通学习路径。这个路径的核心目标很直接:用30天时间,从完全不懂到能够完成基础项目,并具备接单和求职的初步能力。它不是某个单一的软件或模型,而是一套整合了 基础语法、进阶案例、实战项…

2026/7/21 22:12:36阅读更多 →
鸿蒙 ArkTS 实战:Short Rental Cleaning 从房屋短租清洁到短租保洁应用完整解析

鸿蒙 ArkTS 实战:Short Rental Cleaning 从房屋短租清洁到短租保洁应用完整解析

鸿蒙 ArkTS 实战:Short Rental Cleaning 从房屋短租清洁到短租保洁应用完整解析 前言 房屋短租清洁 是一个贴近生活服务场景的鸿蒙 ArkTS 单页应用。它的源码并不复杂,却把状态驱动界面、列表循环渲染、条件样式、按钮事件和业务结果即时反馈都放在了一…

2026/7/21 22:12:36阅读更多 →
鸿蒙 ArkTS 实战:City Guide Schedule 从同城导游日程到本地旅行应用完整解析

鸿蒙 ArkTS 实战:City Guide Schedule 从同城导游日程到本地旅行应用完整解析

鸿蒙 ArkTS 实战:City Guide Schedule 从同城导游日程到本地旅行应用完整解析 前言 同城导游日程 是一个典型的鸿蒙 ArkTS 小型业务应用,页面体量不大,但覆盖了状态驱动界面、列表渲染、条件文案、按钮事件和业务数据即时反馈这些移动端开发…

2026/7/21 22:12:36阅读更多 →
2026 AI Agent 落地指南:除了搭建工具,你还需要配套的搜索基础设施

2026 AI Agent 落地指南:除了搭建工具,你还需要配套的搜索基础设施

2026 年,AI Agent 相关的工具已经较为丰富,从零代码搭建平台到企业级部署方案,从开源开发框架到成品智能体客户端,几乎覆盖了所有落地场景。对很多团队和开发者来说,搭出一个可用的智能体已经不是难事,但实…

2026/7/22 1:01:40阅读更多 →
轻量Agent框架设计复盘:插件系统从v1到v3的架构演化与设计决策

轻量Agent框架设计复盘:插件系统从v1到v3的架构演化与设计决策

轻量Agent框架设计复盘:插件系统从v1到v3的架构演化与设计决策 一、v1的起点:一个简单的工具注册表 2025年Q1开始构建一个轻量Agent框架。v1的设计很简单——一个全局的工具注册表: var toolRegistry map[string]ToolFunc{} func RegisterTo…

2026/7/22 1:01:40阅读更多 →
SolidWorks_焊件设计9_子焊件管理

SolidWorks_焊件设计9_子焊件管理

子焊件管理 摘要 在大型机械结构、钢结构框架或复杂焊接件的设计过程中,将整体焊件合理拆分为子焊件是一种至关重要的工程实践。本文深入探讨了子焊件管理的核心理念、技术实现方法及其在工程出图中的实际应用。通过详细的理论分析和完整的代码示例,展示…

2026/7/22 0:59:38阅读更多 →
SolidWorks_焊件设计8_多草图骨架布局

SolidWorks_焊件设计8_多草图骨架布局

多草图骨架布局:利用多个2D/3D草图构建复杂空间框架结构 摘要 在计算机图形学、CAD辅助设计、游戏开发以及建筑信息模型(BIM)等领域,构建复杂的空间框架结构一直是一个核心挑战。传统的多边形建模或参数化建模往往需要大量的手动调…

2026/7/22 0:59:38阅读更多 →
实时信息获取失效?93%的AI搜索系统正因这3个冷启动陷阱丢失关键数据,附诊断工具包

实时信息获取失效?93%的AI搜索系统正因这3个冷启动陷阱丢失关键数据,附诊断工具包

更多请点击: https://intelliparadigm.com 第一章:实时信息获取失效?93%的AI搜索系统正因这3个冷启动陷阱丢失关键数据,附诊断工具包 当AI搜索系统首次接入新数据源时,高达93%的实例在前72小时内无法捕获关键事件流—…

2026/7/22 0:59:38阅读更多 →
AI视频工具怎么选?这7个关键指标决定你能否节省300小时/年(附横向测评速查表)

AI视频工具怎么选?这7个关键指标决定你能否节省300小时/年(附横向测评速查表)

更多请点击: https://kaifayun.com 第一章:AI视频工具怎么选?这7个关键指标决定你能否节省300小时/年(附横向测评速查表) 选择AI视频工具不是比参数,而是比「单位时间产出比」。一个真正高效的工具&#x…

2026/7/22 0:59:38阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →