鸿蒙 ArkTS 实战:Kitchen Cleaning Plan 从厨房清洁计划到餐厨体验工具完整解析
鸿蒙 ArkTS 实战:Kitchen Cleaning Plan 从厨房清洁计划到餐厨体验工具完整解析
前言
Kitchen Cleaning Plan 是一个用鸿蒙 ArkTS 实现的餐厨体验工具,主题聚焦清洁区域、周期天数、耗材提醒、完成次数和周期提醒。它把家庭厨房、饮食记录、外出就餐和口味管理中的一个小问题,拆成输入、按钮动作、指标和反馈文案。
本文直接基于项目Index.ets源码展开,分析状态字段、输入组件、业务函数、反馈设计和后续扩展方式,形成一篇可以直接发布的技术文章。
餐厨类工具很适合做成单页应用:一个场景、几个输入、一个关键动作,加上一句明确反馈,就能解决真实生活里的小麻烦。
配图可用于文章首屏。正式发布时可以替换为项目真机截图,展示输入区域、指标展示和操作反馈。
一、项目定位与业务场景
1.1 应用定位
用户记录厨房清洁区域、周期和耗材,完成任务后累计次数,并能生成周期提醒。
这个项目的优点是目标很集中,没有复杂页面跳转,所有核心动作都可以在一个页面内完成。
1.2 使用价值
| 价值 | 说明 | 页面体现 |
|---|---|---|
| 快速记录 | 把饮品、菜品、技能、偏好写下来 | TextInput |
| 即时反馈 | 点击按钮后马上看到结果 | 状态文案 |
| 指标沉淀 | 用次数、评分、库存、照片表达进度 | Done |
| 后续复用 | 支持再次查看和调整 | 状态字段 |
二、源码入口与结构
2.1 入口组件
项目入口是标准 ArkTS 页面。
@Entry@Componentstruct Index{build(){Scroll(){Column({space:16}){Text('Kitchen Cleaning Plan')}}}}2.2 页面结构
页面主要分为:
- 标题区:展示
Kitchen Cleaning Plan。 - 输入区:承接用户填写。
- 指标区:展示
Done。 - 按钮区:触发保存、记录、推荐或计时。
- 反馈区:显示最终说明。
三、状态模型抽象
3.1 模型设计
从源码可以抽象出KitchenCleaningState。
typeKitchenCleaningState={name:string;detail:string;metric:string|number;message:string;};3.2 实际状态代码
项目真实状态如下。
@Statearea:string='Range hood';@Statecycle:string='7';@Statesupplies:string='Degreaser, gloves';@Statedone:number=5;3.3 状态职责表
| 状态 | 类型 | 职责 |
|---|---|---|
area | 状态字段 | 支撑厨房清洁计划的输入、记录或反馈 |
cycle | 状态字段 | 支撑厨房清洁计划的输入、记录或反馈 |
supplies | 状态字段 | 支撑厨房清洁计划的输入、记录或反馈 |
done | 状态字段 | 支撑厨房清洁计划的输入、记录或反馈 |
alert | 状态字段 | 支撑厨房清洁计划的输入、记录或反馈 |
状态字段与页面控件一一对应,方便从 UI 反查逻辑,也方便从逻辑定位页面表现。
四、默认数据与首屏体验
4.1 默认内容
| 默认项 | 字段 | 含义 |
|---|---|---|
| Range hood | area | 默认清洁区域 |
| 7 | cycle | 默认周期天数 |
4.2 默认值意义
默认值不是随便填的占位符。它让用户一打开页面就知道工具在做什么,也让开发者能立刻验证按钮动作。
- 默认输入提示业务格式。
- 默认指标让页面更完整。
- 默认反馈引导用户下一步。
五、核心业务函数
5.1 主函数代码
项目核心业务函数如下。
finish():void{this.done++;this.alert=this.area+' cleaned. Consumables: '+this.supplies+'.';}5.2 操作流程
- 填写清洁区域
- 设置周期天数
- 记录耗材
- 完成任务或设置周期提醒
这条路径完成了从用户输入到页面反馈的核心闭环。
六、辅助动作与反馈
6.1 辅助代码
项目还包含辅助动作或展示逻辑。
Button('Cycle Reminder').width('100%').backgroundColor('#0F766E').onClick(()=>this.alert='Reminder every '+this.cycle+' days for '+this.area)6.2 辅助动作价值
| 动作类型 | 价值 | 对应体验 |
|---|---|---|
| 保存 | 保留配方、档案、记录 | 便于复用 |
| 追加 | 增加照片、次数、分数 | 形成积累 |
| 提醒 | 生成风险或低库存提示 | 降低遗漏 |
| 推荐 | 根据偏好生成菜单 | 辅助决策 |
七、输入组件分析
7.1 文本输入
输入框用onChange同步状态。
TextInput({text:this.area,placeholder:'Input value'}).onChange((value:string)=>this.area=value)7.2 数字输入
对于成本、库存、温度、评分、分钟等字段,常见处理是字符串转数字。
constvalue=Number(text);if(Number.isNaN(value)){// keep previous result or show a friendly message}数字输入在这类工具里很关键,因为它直接影响指标可信度。
八、指标展示策略
8.1 核心指标
当前页面的关键指标是Done。
Text('Done '+value).fontSize(24).fontWeight(FontWeight.Bold)8.2 指标类型
| 类型 | 示例 | 作用 |
|---|---|---|
| 次数 | photos、practices、reuseCount | 表达积累 |
| 评分 | score、dishScore | 支持复盘 |
| 库存 | stock、minutes | 管理资源 |
| 文案 | showCard、menu、note | 输出决策 |
九、反馈文案设计
9.1 文案更新
页面通过状态字段更新反馈。
this.note='Action saved.';this.status='Result updated.';9.2 文案标准
| 标准 | 说明 |
|---|---|
| 包含对象 | 说清楚记录的是哪一个饮品、菜品或成员 |
| 包含结果 | 说清楚次数、评分或提示发生了什么变化 |
| 短而明确 | 适合移动端快速扫读 |
| 可继续行动 | 让用户知道下一步可以做什么 |
十、布局与视觉层次
10.1 页面容器
页面使用Scroll,适合内容较多的表单工具。
Scroll(){Column({space:16}){Text('Kitchen Cleaning Plan')// form// metric// buttons// message}.padding(20).width('100%')}10.2 视觉顺序
| 顺序 | 内容 | 目的 |
|---|---|---|
| 1 | 标题 | 建立语境 |
| 2 | 输入框 | 收集数据 |
| 3 | 指标 | 呈现结果 |
| 4 | 按钮 | 触发动作 |
| 5 | 文案 | 解释状态 |
十一、运行验证流程
11.1 手工验证
可以按下面流程验证:
- 打开页面,确认标题为
Kitchen Cleaning Plan。 - 查看默认输入是否正确显示。
- 修改第一个输入框。
- 点击主按钮。
- 检查指标或反馈文案是否更新。
// 手工验证伪代码constbefore='default state';constaction='tap main button';constafter='message or metric updated';console.info(before+' -> '+action+' -> '+after);11.2 验证重点
| 验证点 | 预期 |
|---|---|
| 输入同步 | 状态随输入变化 |
| 主函数执行 | 按钮能触发逻辑 |
| 指标更新 | 数字或文案变化 |
| 多次点击 | 累计逻辑稳定 |
| 文案可读 | 结果清楚 |
十二、边界情况处理
12.1 常见边界
餐厨工具常见边界包括库存小于 0、评分超过 5、联系人为空、成本不是数字等。
constsafeScore=Math.min(5,Math.max(1,score));constsafeStock=Math.max(0,Number(stock));12.2 业务边界
| 场景 | 风险 | 处理方向 |
|---|---|---|
| 过敏卡信息缺失 | 外出展示不完整 | 提醒补全联系人 |
| 库存不足 | 继续使用不合理 | 显示低库存 |
| 评分溢出 | 数据不可信 | 限制 1 到 5 |
| 计时归零 | 继续扣减无意义 | 使用Math.max |
| 菜单推荐 | 忌口遗漏 | 优先过滤限制 |
十三、扩展为完整应用
13.1 业务扩展
后续可以加入区域清单、耗材库存、提醒通知、家庭分工和清洁历史。
13.2 工程抽象
可以抽象统一餐厨记录模型。
interfaceFoodToolRecord{title:string;category:string;value:number;note:string;createdAt:number;}functioncreateFoodToolRecord(title:string,category:string,value:number,note:string):FoodToolRecord{return{title,category,value,note,createdAt:Date.now()};}十四、维护与优化
14.1 状态集中
当前项目规模适合把状态集中在页面组件里。后续如果加入历史记录或多个页面,再拆分数据服务。
14.2 函数职责
函数应该保持单一动作:保存、提交、计时、推荐、加分或扣减。
functionformatResult(name:string,detail:string):string{returnname+': '+detail;}14.3 用户体验
反馈信息要放在按钮下方,用户点击后能立刻看到变化。
十五、工程复盘
15.1 当前实现亮点
- 状态字段与业务强相关。
- 交互路径短。
- 指标和文案反馈明确。
- 代码适合继续扩展。
- 适合作为 ArkTS 单页实践案例。
15.2 可复用经验
Kitchen Cleaning Plan的实现思路可以复用到饮品、菜谱、探店、课程、库存、过敏卡和家庭口味管理等多个场景。关键是把复杂生活信息拆成几个稳定状态。
总结
Kitchen Cleaning Plan用鸿蒙 ArkTS 实现了一个围绕厨房清洁计划的餐厨体验工具。它通过@State管理输入和结果,通过TextInput收集用户内容,通过按钮触发业务函数,再用指标和文案完成即时反馈。
从工程角度看,这个项目已经具备单页工具的完整闭环。继续加入历史记录、图片、模板、提醒或本地存储,都可以沿着当前结构自然扩展。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
补充说明:指标展示让用户能快速判断一次操作是否已经记录完成。
补充说明:反馈文案是移动端体验的重要部分,能减少用户反复确认。
补充说明:后续持久化时,可以优先保存输入值、指标值、备注和创建时间。
补充说明:当前页面把餐厨场景拆成了清晰的状态、动作和反馈。
相关资源:
- HarmonyOS 开发者官网
- ArkTS 语言基础
- ArkUI 组件开发
