鸿蒙 ArkTS 实战:Savings Goal Tracker 从储蓄目标追踪到储蓄计划应用完整解析
鸿蒙 ArkTS 实战Savings Goal Tracker 从储蓄目标追踪到储蓄计划应用完整解析前言储蓄目标追踪 是一个典型的鸿蒙 ArkTS 轻量工具页面。它围绕“设置储蓄目标、已存金额和每日存入金额实时显示距离目标还差多少。”这个明确需求把参数输入、公式计算、状态反馈和结果展示集中在同一屏。本文基于 Savings Goal Tracker 的真实源码展开重点分析State 状态建模、Slider 数值输入、Toggle 开关状态、ForEach 列表渲染、方法封装公式和条件样式反馈。工具型应用的关键不是页面复杂而是输入变化后结果足够清楚、足够及时。图示说明页面由标题摘要、参数控制、结果展示和业务说明组成适合学习 ArkTS 单页工具的状态流。一、项目场景1.1 业务目标设置储蓄目标、已存金额和每日存入金额实时显示距离目标还差多少。1.2 用户路径查看默认参数和初始结果。通过滑杆、按钮、开关或列表调整输入。页面立即重新计算并展示结果。用户根据结果完成估算、计划或记录。1.3 技术目标目标页面体现ArkTS 实现参数输入数字、开关、选项Slider / Toggle / ForEach状态保存当前数值和选择State公式计算税额、重量、费用、平均值方法封装结果反馈大数字和状态文案Text / Stack / 条件样式二、页面入口2.1 组件骨架EntryComponentstruct Index{build(){Column(){Text(储蓄目标追踪)}}}2.2 单页结构价值储蓄目标追踪 的主要状态是 goal、saved、daily。这些字段都直接影响界面输出集中在一个组件中更利于理解数据流。2.3 页面分区区域作用常见组件顶部标题和核心结果Row、Text中部图形结果或列表Stack、Circle、ForEach底部参数和说明Slider、Button、Toggle三、状态建模3.1 State 字段字段类型说明goalnumber储蓄目标默认 5000savednumber已存金额默认 1800dailynumber每天存入金额默认 503.2 状态声明EntryComponentstruct Index{Stategoal:number5000;// 储蓄目标默认 5000Statesaved:number1800;// 已存金额默认 1800Statedaily:number50;// 每天存入金额默认 50}3.3 状态边界这些字段都贴近业务语言。数值字段用于计算布尔字段用于开关索引字段用于选择数组字段用于可变列表。状态字段越接近用户看到的业务概念后续调试就越轻松。四、业务数据4.1 静态配置无数组字段页面围绕目标、已存和每日计划构成储蓄记录4.2 列表渲染ForEach(this.items,(item:string,index:number){Text(item).fontSize(16).fontWeight(FontWeight.Bold).onClick((){this.selectedindex})})4.3 选中态表达.backgroundColor(this.selectedindex?#0F766E:#FFFFFF).fontColor(this.selectedindex?#FFFFFF:#0F766E)这种写法可以让当前选择、详情内容和视觉高亮保持同步。五、输入控件5.1 Slider 数值输入Slider 适合调节金额、天数、宽度、体重、分钟、比例、株距和成绩等范围参数。Slider({value:this.value,min:0,max:100,step:1}).onChange((value:number){this.valueMath.round(value)})5.2 Toggle 开关Toggle 用于含税、提醒、专注模式等二值状态。Toggle({type:ToggleType.Switch,isOn:this.enabled}).onChange((on:boolean){this.enabledon})5.3 Button 操作Button 用于新增、确认、重置或推进离散动作。Button(执行).backgroundColor(#0F766E).onClick((){this.count1})六、交互行为6.1 动作列表Slider 调整 goalSlider 调整 savedSlider 调整 dailyremain 方法计算剩余金额6.2 关键源码remain():number{returnthis.goal-this.saved}6.3 反馈闭环Slider 调整 goalSlider 调整 savedSlider 调整 dailyremain 方法计算剩余金额交互闭环很简单用户改变输入状态字段更新公式重新计算Text 和颜色同步刷新。七、公式解析7.1 核心公式remaingoal-saved7.2 方法封装当公式包含判断、循环或取整时用方法封装更清楚。privatecalc():number{returnMath.round(1)}7.3 结果渲染Text(结果String(value)).fontSize(40).fontWeight(FontWeight.Bold).fontColor(#0F766E)结果必须配合单位展示避免用户误解数字含义。八、视觉设计8.1 大数字税额、天数、码数、克数、金额、分钟、毫升、厘米、公里、分数等都适合用大字号强调。8.2 图形容器Stack、Circle、Rect 能让结果区域更集中。Stack(){Circle().width(200).height(200).fill(#F8FAFC)Text(核心结果)}8.3 条件颜色.fontColor(this.warning?#DC2626:#0F766E)8.4 文案提示Text(this.done?已完成:待处理)九、布局策略9.1 上下结构上下结构适合先展示标题和结果再展示参数控制。9.2 左右结构左右结构适合左侧大结果、右侧参数列表的工具页面。9.3 信息层级层级内容目的一级核心结果直接判断二级输入参数明确来源三级说明文案解释规则十、调试路径10.1 手动验证检查默认状态是否与源码一致。调整每个 Slider 或 Toggle。确认公式结果即时刷新。测试最小值、最大值和开关状态。10.2 日志辅助Button(调试).onClick((){console.info(state changed)})10.3 问题定位问题原因处理方式结果不变状态未写回检查 onChange数字异常公式边界未处理增加取整或限制文案不对条件分支错误单独验证布尔值列表错位index 映射错误对齐数组顺序十一、工程扩展11.1 历史记录可以保存每一次估算、换算、计划或统计结果方便后续对比。interfaceHistoryItem{title:stringinput:stringresult:stringcreatedAt:string}11.2 本地缓存用户经常重复使用同一组参数适合把最近一次状态缓存起来。11.3 分享结果{tool:储蓄目标追踪,state:goal、saved、daily,result:calculated}十二、体验优化12.1 单位清晰元、天、码、克、分钟、毫升、厘米、公里、分数等单位必须紧跟结果。12.2 范围合理Slider 的 min、max、step 要符合真实使用场景。12.3 反馈直接工具页面不应该等提交后再展示结果输入变化后就应立即刷新。十三、完整片段13.1 状态骨架EntryComponentstruct Index{Stategoal:number5000;// 储蓄目标默认 5000Statesaved:number1800;// 已存金额默认 1800Statedaily:number50;// 每天存入金额默认 50}13.2 数据配置// 无数组字段页面围绕目标、已存和每日计划构成储蓄记录privateprimaryColor:string#0F766E13.3 交互代码remain():number{returnthis.goal-this.saved}13.4 样式代码Text(核心结果).fontSize(28).fontWeight(FontWeight.Bold).fontColor(#0F766E)十四、复用价值14.1 状态复用number 用于金额、天数、重量、比例和分数。boolean 用于提醒、含税和专注等开关。number[] 可用于成绩、清单和多项统计。14.2 公式复用储蓄目标追踪 的公式写法可以迁移到更多换算、预算、规划和统计页面。14.3 组件复用结果卡片、参数滑杆、选择标签和说明文案都可以抽成通用组件。十五、发布级拆解15.1 场景先行文章开头先说清楚 储蓄目标追踪 解决什么问题再进入 ArkTS 代码读者更容易理解公式意义。15.2 状态为线索围绕 goal、saved、daily 展开讲解可以把页面输入、计算和结果串起来。十六、总结Savings Goal Tracker 用简洁的 ArkTS 页面完成了 储蓄计划 场景。它围绕 goal、saved、daily 建模结合 无数组字段页面围绕目标、已存和每日计划构成储蓄记录 组织输入并通过remain goal - saved把业务规则转换成即时可见的结果。这类鸿蒙小工具的关键在于状态清楚、公式透明、反馈及时、边界稳定。理解这个项目后再开发税额计算、倒计日、尺寸换算、喂食计算、费用估算或成绩统计等页面都会更顺手。相关资源HarmonyOS 开发者官网ArkTS 语言指南ArkUI 开发框架

相关新闻

DocMind-python-agent-V2:Langgraph与状态机

DocMind-python-agent-V2:Langgraph与状态机

通过上节课我们可以看到,在没有告诉大模型数据库结构的情况下,大模型会请求三次调用执行sql的tool来抓表、抓表结构、抓数据,而且是我们通过对话大模型告诉我的,本节课我们实操一下Langgraph与状态机,在项目中来监控。…

2026/10/16 12:40:45 阅读更多 →
TMS320F2837xS Flash配置优化:从等待状态到ECC的嵌入式系统性能提升指南

TMS320F2837xS Flash配置优化:从等待状态到ECC的嵌入式系统性能提升指南

1. 项目概述与核心挑战 在基于TMS320F2837xS这类高性能实时微控制器的嵌入式系统开发中,Flash存储器的配置与优化常常是决定系统整体性能与可靠性的关键一环,却也是最容易被忽视或配置不当的环节。很多工程师在项目初期,往往将注意力集中在算…

2026/10/16 17:32:34 阅读更多 →
DM646x启动机制深度解析:从ROM Bootloader到多模式引导实战

DM646x启动机制深度解析:从ROM Bootloader到多模式引导实战

1. 项目概述:深入理解DM646x的启动基石在嵌入式系统开发中,系统上电后的第一行代码决定了整个设备的命运。对于基于德州仪器(TI)TMS320DM646x这类高度集成的数字媒体片上系统(DMSoC)而言,其内置…

2026/10/10 17:09:05 阅读更多 →

最新新闻

Spring Boot整合Shiro权限框架实战:从认证到动态权限配置

Spring Boot整合Shiro权限框架实战:从认证到动态权限配置

1. 为什么在Spring Boot项目里选Shiro而不是别的权限框架先说个现实问题。做Java后端的人一旦涉及登录、权限控制,十有八九会在Shiro和Spring Security之间纠结。Spring Security背靠Spring官方生态,功能全但学习曲线陡峭;Shiro则轻巧、直观&…

2026/10/17 0:35:01 阅读更多 →
64位OpenGL开发必学:用GLAD加载器解决函数指针链接错误

64位OpenGL开发必学:用GLAD加载器解决函数指针链接错误

简介:面向激光与物理光学设计领域的 Glad 5.8(64位)演示资源包,适配需要开展激光器建模、光束传播仿真与谐振腔优化的工程师、科研人员及高校相关专业学生。资源内含完整示例与说明文档,可帮助用户熟悉几何光学追迹、菲…

2026/10/17 0:35:01 阅读更多 →
基于信息熵与互信息的新词提取原理与实战

基于信息熵与互信息的新词提取原理与实战

1. 项目概述:为什么新词提取不是“找高频词”那么简单?“学习NLP的第20天——基于信息熵和互信息的新词提取实现”,这个标题乍看像一份学习笔记,但背后藏着自然语言处理中最常被低估、也最容易被误用的核心能力之一:未…

2026/10/17 0:35:01 阅读更多 →
一张4090跑通Qwen2.5-7B大模型LoRA微调完整实操指南

一张4090跑通Qwen2.5-7B大模型LoRA微调完整实操指南

简介:面向具备机器学习基础的研究人员和开发者,这是一份基于Qwen2.5-7B-Instruct大模型微调的完整实操指南。内容围绕AutoDL 4090云GPU环境,系统讲解从环境搭建、社区镜像选择、HF镜像下载预训练模型,到使用LLaMA-Factory配置数据…

2026/10/17 0:35:01 阅读更多 →
GEO生成式引擎优化:从传统搜索到AI引用的宣发新范式

GEO生成式引擎优化:从传统搜索到AI引用的宣发新范式

这两年做媒介宣发,最明显的变化是:投放出去的稿子,用户到底看没看到,越来越说不清了。以前我们靠阅读量、搜索排名和外链数量做判断,现在这些指标还在,真正的转化路径却已经变了——很多人遇到问题不再去搜…

2026/10/17 0:34:00 阅读更多 →
善付通支付结算接入全攻略:从报文加解密到订单对账闭环

善付通支付结算接入全攻略:从报文加解密到订单对账闭环

简介:建设银行善付通支付结算接入文档是一份面向企业开发与财务人员的详细技术指南,适用于需要将善付通采购订单、销售订单、收付款及结算对账流程嵌入自有系统的场景。文档完整覆盖对接流程、数据传输规范、报文格式与数据加解密要求,并逐一…

2026/10/17 0:34:00 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →