鸿蒙 ArkTS 实战:Battery Recycle Map 从电池回收地图到绿色生活工具完整解析
鸿蒙 ArkTS 实战:Battery Recycle Map 从电池回收地图到绿色生活工具完整解析
前言
Battery Recycle Map 是一个围绕回收点保存、电池投递记录、安全提示和周期提醒的鸿蒙 ArkTS 单页应用。它把绿色生活里的一个具体行为做成可输入、可记录、可反馈的页面,让用户能在日常场景里快速完成一次环保行动记录。
本文基于项目Index.ets源码展开,重点分析状态字段、输入组件、按钮动作、指标展示和反馈文案。文章内容可以直接发布,不依赖额外说明。
绿色生活工具的关键不在功能多,而在动作短。用户输入一次、点击一次、看到一个明确反馈,就已经形成了很好的产品闭环。
配图可用于文章首屏。实际发布时可以替换为真机截图,重点展示输入区域、指标区域、按钮动作和状态反馈。
一、项目定位与使用场景
1.1 应用定位
用户保存常用电池回收点,记录电池投递次数,并通过安全提示提醒锂电池端子处理和破损电池分类。
这个项目适合作为低碳生活、环保习惯、社区协作或家庭记录工具的功能原型。它没有复杂路由,主逻辑集中在一个页面中,便于阅读、调试和继续扩展。
1.2 目标拆解
| 目标 | 说明 | 页面体现 |
|---|---|---|
| 快速记录 | 用户能在一个页面完成输入 | TextInput |
| 行为反馈 | 点击后立即更新状态 | Button |
| 指标可见 | 用数字表达累计结果 | Drop records |
| 建议明确 | 文案给出下一步动作 | 状态文本 |
二、源码入口与页面骨架
2.1 入口结构
项目使用标准 ArkTS 页面组件。
@Entry@Componentstruct Index{build(){Scroll(){Column({space:16}){Text('Battery Recycle Map')}}}}2.2 页面层次
页面主要由四块构成:
- 输入区:填写行为对象、地点、规则或数值。
- 指标区:展示
Drop records。 - 动作区:触发保存、记录、分析或提醒。
- 反馈区:显示状态、建议、安全提示或下一步信息。
三、状态模型抽象
3.1 模型定义
从源码状态可以抽象出BatteryRecycleState。
typeBatteryRecycleState={title:string;value:string|number;note:string;updated:boolean;};3.2 实际状态代码
项目中真实使用的状态如下。
@Statestation:string='Mall battery drop box';@StatebatteryType:string='AA batteries x 6';@Statedrops:number=3;@Statereminder:string='Monthly reminder enabled.';@StatesafetyTip:string='Tape lithium battery terminals before drop-off.';3.3 状态职责表
| 状态 | 类型 | 职责 |
|---|---|---|
station | 状态字段 | 支撑 电池回收地图 的输入、统计或反馈 |
batteryType | 状态字段 | 支撑 电池回收地图 的输入、统计或反馈 |
drops | 状态字段 | 支撑 电池回收地图 的输入、统计或反馈 |
reminder | 状态字段 | 支撑 电池回收地图 的输入、统计或反馈 |
safetyTip | 状态字段 | 支撑 电池回收地图 的输入、统计或反馈 |
这些状态都直接参与 UI 渲染。只要用户输入或点击按钮,状态变化就会反馈到页面。
四、默认数据与首屏理解
4.1 默认内容
| 默认项 | 初始值 | 含义 |
|---|---|---|
| Mall battery drop box | 回收点 | 默认投递位置 |
| AA batteries x 6 | 电池类型 | 默认投递记录 |
4.2 默认值的意义
默认值让用户打开页面后无需猜测功能。比如Battery Recycle Map会直接给出一个可编辑的初始对象和一个可观察的指标,用户点击主按钮就能看到状态变化。
- 默认文本说明输入格式。
- 默认数字支撑指标展示。
- 默认提示引导用户完成下一步。
五、核心动作函数
5.1 主要动作代码
项目的核心行为由按钮触发,下面是主要逻辑。
recordDrop():void{this.drops++;this.reminder='Drop recorded at '+this.station+'. Next reminder in 30 days.';}5.2 动作流程
- 录入回收点
- 填写电池类型
- 保存地图点位
- 记录投递并更新提醒
这条流程短而明确,适合移动端工具。用户不需要跨页面,也不需要复杂配置。
六、辅助逻辑与扩展动作
6.1 辅助代码
源码中还包含辅助动作、提示更新或二级按钮。
Button('Show Safety Tip').width('100%').backgroundColor('#B45309').onClick(()=>this.safetyTip='Do not mix damaged batteries with household waste.')6.2 多动作设计
| 动作类型 | 作用 | 用户收益 |
|---|---|---|
| 保存 | 记录地点、品牌、对象或计划 | 便于复用 |
| 记录 | 增加次数、时长、积分或照片 | 形成累计 |
| 提醒 | 设置下一次行动提示 | 促进习惯 |
| 反馈 | 给出安全、评分或建议 | 降低误用 |
七、输入组件设计
7.1 TextInput 绑定
输入框直接绑定@State字段。
TextInput({text:this.station,placeholder:'Input value'}).onChange((value:string)=>this.station=value)7.2 数字输入处理
涉及数量、功率、天数或次数时,代码会把字符串转成数字。
letvalue=Number(inputText);if(Number.isNaN(value)){// show message or ignore invalid input}这类处理虽然简单,但决定了工具是否可靠。
八、指标展示策略
8.1 核心指标
当前页面的关键指标是Drop records。
Text('Drop records '+value).fontSize(24).fontWeight(FontWeight.Bold)8.2 指标作用
| 指标作用 | 表达方式 | 产品价值 |
|---|---|---|
| 记录成果 | 次数、照片、积分、节省量 | 让行动可见 |
| 表达进度 | 排名、连续天数、评分 | 建立激励 |
| 引导改善 | 安全提示、建议、提醒 | 促进下一步 |
九、按钮交互设计
9.1 Button 的职责
按钮不只是触发点击,它承载了页面最重要的业务意图。
Button('Main Action').width('100%').onClick(()=>{// update state})9.2 交互反馈
点击按钮后至少要更新一个可见状态:数字、提醒、说明、照片数量、积分或评分。否则用户无法判断操作是否生效。
在环保工具里,反馈文案要尽量具体。例如“已保存回收点”比“成功”更有价值。
十、布局与视觉设计
10.1 Scroll 容器
页面使用Scroll包裹内容,可以适应输入项和按钮数量增长。
Scroll(){Column({space:16}){Text('Battery Recycle Map')// inputs// metric// actions// feedback}.padding(20).width('100%')}10.2 颜色语义
| 颜色方向 | 适合场景 | 作用 |
|---|---|---|
| 绿色 | 回收、分类、植物、低碳行动 | 强化环保感 |
| 蓝色 | 数据分析、设备对比、提醒 | 表达理性与稳定 |
| 黄色 | 早餐、生活打卡、温和提示 | 表达日常习惯 |
| 棕色 | 旧书、电池、堆肥等物品流转 | 表达生活材料感 |
十一、状态反馈文案
11.1 文案类型
项目里的文案承担用户引导职责。
| 文案类型 | 例子 | 功能 |
|---|---|---|
| 记录成功 | 投递、签到、保存完成 | 确认动作 |
| 安全提醒 | 电池处理、分类规则 | 防止误操作 |
| 习惯建议 | 明天继续、设置提醒 | 促进坚持 |
| 结果说明 | 节省、评分、积分 | 展示价值 |
11.2 文案更新
文案通常通过状态字段更新。
this.status='Action recorded.';this.reminder='Next reminder updated.';十二、运行验证流程
12.1 手工验证
可以按下面流程验证页面:
- 打开页面,确认标题为
Battery Recycle Map。 - 检查默认输入值和指标是否存在。
- 修改输入框内容。
- 点击主要按钮。
- 观察指标和反馈文案是否变化。
// 验证路径示例constbefore='default state';constaction='tap primary button';constafter='visible state updated';console.info(before+' -> '+action+' -> '+after);12.2 验证重点
| 验证点 | 预期 |
|---|---|
| 输入同步 | 文本状态随输入变化 |
| 按钮触发 | 对应函数执行 |
| 数值变化 | 指标即时更新 |
| 文案变化 | 用户知道发生了什么 |
| 连续点击 | 累计逻辑不异常 |
十三、边界情况处理
13.1 数值边界
如果项目涉及功率、页数、次数、成本、碳排或天数,需要考虑空值、负数和非数字输入。
constnum=Number(text);if(!Number.isFinite(num)||num<0){// show friendly feedback}13.2 业务边界
需要重点关注:
- 未填写地点时是否还能保存。
- 连续点击是否造成异常累计。
- 评分是否超过最大值。
- 成本或积分是否出现负数。
- 提醒文案是否与当前输入一致。
十四、扩展为完整工具
14.1 业务扩展
后续可以加入地图定位、附近回收点搜索、电池类型分类、投递日历和危险品安全知识卡。
14.2 工程扩展
可以抽象统一绿色行动记录。
interfaceGreenAction{name:string;metric:number;unit:string;note:string;time:number;}functioncreateGreenAction(name:string,metric:number,unit:string,note:string):GreenAction{return{name,metric,unit,note,time:Date.now()};}统一模型能帮助后续接入历史列表、图表、提醒和本地存储。
十五、工程复盘
15.1 当前实现亮点
- 页面逻辑集中,易读易改。
- 输入和状态绑定直接。
- 主要动作有即时反馈。
- 指标能体现绿色行动成果。
- 适合继续扩展为完整生活工具。
15.2 可复用经验
Battery Recycle Map的实现可以迁移到很多生活应用:回收、打卡、设备对比、社区活动、家庭记录、植物养护和物品流转。关键是把一次真实行动压缩成一个清晰的页面闭环。
总结
Battery Recycle Map用鸿蒙 ArkTS 构建了一个围绕电池回收地图的绿色生活工具。它通过@State保存输入和结果,通过TextInput获取用户记录,通过按钮触发业务函数,再用指标和文案把结果反馈给用户。
从工程角度看,这个项目已经完成了从输入到反馈的核心路径。后续继续加入历史记录、地图、提醒、图表或本地存储,都可以沿着当前状态结构自然演进。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
补充说明:指标展示让绿色行动从抽象口号变成可见数字。
补充说明:状态文案承担了引导作用,能让用户知道下一步该怎么做。
补充说明:后续接入持久化时,可以优先保存输入值、指标值、反馈文案和时间戳。
补充说明:当前页面保留了很短的操作路径,适合日常场景里快速完成一次记录。
相关资源:
- HarmonyOS 开发者官网
- ArkTS 语言基础
- ArkUI 组件开发