鸿蒙 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会直接给出一个可编辑的初始对象和一个可观察的指标,用户点击主按钮就能看到状态变化。

  1. 默认文本说明输入格式。
  2. 默认数字支撑指标展示。
  3. 默认提示引导用户完成下一步。

五、核心动作函数

5.1 主要动作代码

项目的核心行为由按钮触发,下面是主要逻辑。

recordDrop():void{this.drops++;this.reminder='Drop recorded at '+this.station+'. Next reminder in 30 days.';}

5.2 动作流程

  1. 录入回收点
  2. 填写电池类型
  3. 保存地图点位
  4. 记录投递并更新提醒

这条流程短而明确,适合移动端工具。用户不需要跨页面,也不需要复杂配置。

六、辅助逻辑与扩展动作

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 手工验证

可以按下面流程验证页面:

  1. 打开页面,确认标题为Battery Recycle Map
  2. 检查默认输入值和指标是否存在。
  3. 修改输入框内容。
  4. 点击主要按钮。
  5. 观察指标和反馈文案是否变化。
// 验证路径示例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 组件开发