当前位置: 首页 > news >正文

鸿蒙 ArkTS 实战:Recipe Rewriter 从轻量生成到草稿管理完整解析

鸿蒙 ArkTS 实战:Recipe Rewriter 从轻量生成到草稿管理完整解析

前言

Recipe Rewriter 是一个面向菜谱改写助手的鸿蒙 ArkTS 单页工具。它把主题输入、数量统计、提示备注和状态保存放在同一屏,适合快速生成、筛选和沉淀内容草稿。

项目服务于 家庭用户或内容作者把菜谱按口味、步骤和购物清单重新整理。对美食博主、家庭料理用户、轻食店运营来说,真正重要的是把灵感或草稿从临时想法变成可追踪的列表,而不是停留在一次性输入框里。

业务痛点:菜谱改写需要同时考虑食材、步骤、口味和采购清单,手动整理容易遗漏关键说明。

图示说明:本文围绕 Recipe Rewriter 的页面状态、草稿记录、统计卡片和保存闭环进行拆解。

一、业务定位与产品目标

1.1 面向的使用场景

用草稿列表管理不同菜谱版本,用户可以快速保存满意方案并继续调整口味描述。 这类应用的核心不是替代完整平台,而是在移动端提供一个短路径、低干扰、可持续整理的工作面板。

1.2 页面能力概览

当前页面可以拆成四个区域:

  1. 顶部标题,明确工具用途。

  2. 统计卡片,展示DraftsSaved

  3. 功能标签,说明生成、调整、保存等能力边界。

  4. 输入表单和草稿列表,完成新增、展示与状态切换。

页面区域实现元素业务意义
标题区Text标识菜谱改写助手
统计区totalAmount / savedCount统计菜谱草稿和保存进度
标签区四个 Text 标签提示工具覆盖范围
列表区ForEach管理草稿和结果

二、工程结构与入口文件

2.1 标准 Stage 结构

项目采用标准鸿蒙 Stage 工程,业务页面集中在entry/src/main/ets/pages/Index.ets。单页工具把模型、状态和布局集中呈现,便于快速理解实现路径。

entry/ src/ main/ ets/ entryability/ EntryAbility.ets pages/ Index.ets module.json5

2.2 模块入口理解

页面代码负责业务交互,模块配置负责应用加载。理解入口配置有助于排查页面未加载、Ability 路径错误等问题。

{"module":{"name":"entry","type":"entry","abilities":[{"name":"EntryAbility","srcEntry":"./ets/entryability/EntryAbility.ets","exported":true}]},"topic":"菜谱改写助手"}

三、数据模型:草稿记录的最小闭环

3.1 记录字段设计

AiRecord用四个字段描述一条记录:title表示主题,amount表示数量口径,note保存提示或结果状态,saved表示是否已处理。

interfaceAiRecord{title:string;amount:number;note:string;saved:boolean;}@Staterecords:AiRecord[]=[{title:'Tomato pasta',amount:1,note:'Mild taste, list ready',saved:false},{title:'Chicken soup',amount:1,note:'Steps generated',saved:false}];

3.2 默认数据的业务含义

默认数据用于说明应用的真实使用方向,也让首次打开页面时可以直接看到统计和列表效果。

默认标题数量备注Saved
Tomato pasta1Mild taste, list readyfalse
Chicken soup1Steps generatedfalse

这些默认记录覆盖食材输入步骤生成口味调整购物清单,能体现项目不是泛化空壳,而是围绕具体内容流程设计。

四、状态管理:输入、模式与反馈

4.1 页面状态字段

页面使用@State管理输入草稿、智能模式开关和状态文案。smartMode控制顶部开关,status负责反馈新增是否成功。

@StatetitleText:string='';@StateamountText:string='';@StatenoteText:string='';@StatesmartMode:boolean=true;@Statestatus:string='AI lightweight tool ready';

4.2 草稿与正式记录分离

输入框内容先进入titleTextamountTextnoteText,点击按钮且校验通过后才会写入 records。这个设计能避免半成品输入污染正式草稿列表。

关键点:生成类工具也需要记录闭环,否则用户会得到一堆瞬时结果,却无法持续比较和复用。

五、统计逻辑:数量与保存进度

5.1 总量统计

totalAmount()遍历 records,把 amount 累加为Drafts。这个数字表示当前页面已经沉淀了多少菜谱草稿

5.2 状态统计

savedCount()根据saved字段统计已处理记录,并以已处理/总记录数的形式显示。

privatetotalAmount():number{lettotal=0;this.records.forEach((item:AiRecord)=>{total+=item.amount;});returntotal;}privatesavedCount():number{letcount=0;this.records.forEach((item:AiRecord)=>{if(item.saved){count++;}});returncount;}
函数统计字段显示位置业务价值
totalAmountamountDrafts掌握菜谱草稿规模
savedCountsavedSaved掌握可复用结果比例
toggleSavedindex列表勾选快速更新状态

六、新增草稿流程

6.1 输入校验

新增时先把数量字符串转换为数字,再检查标题是否为空、数量是否有效。校验失败时只更新状态文案,不写入列表。

6.2 顶部插入策略

新草稿插入到列表顶部,便于用户优先查看刚生成或刚整理的内容。

privateaddRecord():void{constamount=Number(this.amountText);if(this.titleText.trim().length===0||!Number.isFinite(amount)){this.status='Enter title and valid number';return;}this.records=[{title:this.titleText,amount:Math.round(amount),note:this.noteText.length>0?this.noteText:'Draft note',saved:false},...this.records];this.titleText='';this.amountText='';this.noteText='';this.status='Draft added';}

七、保存状态与刷新机制

7.1 状态切换

列表勾选会切换saved字段。随后通过数组展开生成新引用,让界面稳定刷新。

privatetoggleSaved(index:number):void{this.records[index].saved=!this.records[index].saved;this.records=[...this.records];}

7.2 视觉反馈

被勾选的记录会使用浅绿色背景,未勾选记录保持白色。这种反馈能帮助用户快速区分待处理草稿和已保存结果。

状态背景用户感知
未处理#FFFFFF仍需比较或修改
已处理#DCFCE7可以复用或归档
输入异常状态文案需要修正输入

八、统计卡片与功能标签

8.1 顶部统计卡片

顶部统计区左侧展示Drafts,右侧展示Saved。紫色强调生成数量,绿色强调已处理状态。

Row({space:10}){Column({space:4}){Text('Drafts').fontSize(13).fontColor('#475569')Text(String(this.totalAmount())).fontSize(24).fontWeight(FontWeight.Bold).fontColor('#7C3AED')}.layoutWeight(1).padding(14).backgroundColor('#EDE9FE').borderRadius(8)Column({space:4}){Text('Saved').fontSize(13).fontColor('#475569')Text(this.savedCount()+'/'+this.records.length).fontSize(24).fontWeight(FontWeight.Bold).fontColor('#047857')}.layoutWeight(1).padding(14).backgroundColor('#D1FAE5').borderRadius(8)}

8.2 功能标签解读

页面标签分别是Ingredient inputStep generateTaste adjustShopping list,对应内容生成工具的四个基本环节。

  • 食材输入:确定输入对象。

  • 步骤生成:形成初始结果。

  • 口味调整:进行调整或判断。

  • 购物清单:沉淀可复用结果。

九、输入表单与列表渲染

9.1 表单区域

表单采用主题、数量、提示备注三个输入框,配合一个新增按钮完成草稿创建。

Column({space:10}){TextInput({placeholder:'Input topic',text:this.titleText}).onChange((value:string)=>this.titleText=value)TextInput({placeholder:'Count',text:this.amountText}).type(InputType.Number).onChange((value:string)=>this.amountText=value)TextInput({placeholder:'Prompt note',text:this.noteText}).onChange((value:string)=>this.noteText=value)Button('Add draft').height(42).width('100%').onClick(()=>this.addRecord())}

9.2 列表区域

列表使用ForEach渲染 records。每一行都包含勾选框、标题、备注和数量,适合快速浏览草稿质量和处理状态。

ForEach(this.records,(item:AiRecord,index:number)=>{Row(){Toggle({type:ToggleType.Checkbox,isOn:item.saved}).onChange(()=>this.toggleSaved(index))Column({space:6}){Text(item.title).fontSize(18).fontWeight(FontWeight.Bold).fontColor('#111827')Text(item.note).fontSize(14).fontColor('#475569')}.layoutWeight(1).margin({left:8})Text(String(item.amount)).fontSize(18).fontWeight(FontWeight.Bold).fontColor('#7C3AED')}.padding(14).backgroundColor(item.saved?'#DCFCE7':'#FFFFFF').borderRadius(8).width('100%')})

十、业务流程复盘

10.1 标准路径

Recipe Rewriter 的一次使用可以拆成四步:

  1. 输入菜谱或食材主题。

  2. 填写生成份数。

  3. 补充口味或步骤提示。

  4. 满意后保存草稿。

10.2 异常路径

当标题为空或数量无效时,新增动作会被拦截。这能保证列表中的草稿至少具备主题和数量两个核心信息。

constamount=Number(this.amountText);constinvalid=this.titleText.trim().length===0||!Number.isFinite(amount);if(invalid){this.status='Enter title and valid number';}

十一、扩展设计

11.1 持久化记录

如果要从演示工具走向正式应用,可以为记录增加 id、创建时间和更新时间,并写入本地存储。

interfacePersistedDraft{id:string;title:string;amount:number;note:string;saved:boolean;updatedAt:number;}

11.2 行业能力扩展

后续可以接入营养估算、人数换算、过敏源标注和购物清单导出。

推荐按以下顺序扩展:

  1. 先做本地保存,避免草稿丢失。

  2. 再增加模板、分类和搜索能力。

  3. 最后接入导出、分享或云端同步。

十二、调试与验证

12.1 核心验证点

验证时重点检查新增草稿、数量统计、状态勾选、背景变化和错误提示。

12.2 运行检查

可以在 DevEco Studio 中启动预览或真机运行,按输入、生成、保存的路径逐项验证。

# 常规验证动作# 1. 输入主题、数量和提示备注# 2. 点击 Add draft 或 Add record# 3. 检查新记录是否位于顶部# 4. 勾选记录并观察统计变化
验证项预期结果业务意义
有效新增列表顶部出现草稿快速沉淀内容结果
空标题显示错误状态避免无主题记录
勾选状态统计和背景同步变化区分可复用结果
空备注自动写入默认备注保证列表可读

十三、可复用的生成工具模式

13.1 通用公式

这类页面可以抽象成一个生成类工具公式:输入主题、生成数量、提示备注、保存状态。

输入主题 + 生成数量 + 提示备注 + 保存状态 = 可复用的轻量生成工具

13.2 复用边界

复用时不能只替换应用标题,还要同步调整默认数据、统计名称、功能标签和业务说明,否则生成工具会失去真实场景感。

总结

Recipe Rewriter 用简洁的 ArkTS 单页结构,把菜谱改写助手场景中的生成、整理、保存动作串成闭环。它的重点不是复杂模型调用,而是用清晰的状态和列表管理结果。

对于 美食博主、家庭料理用户、轻食店运营 来说,这种工具能减少临时记录和反复复制,让草稿持续沉淀。后续补充持久化、模板和导出能力后,它可以进一步扩展为更完整的内容生产助手。

如果这篇文章对你有帮助,可以点赞、收藏并关注,后续会继续拆解更多鸿蒙 ArkTS 实战项目。


相关资源:

  • HarmonyOS 应用开发
  • ArkTS 语言基础
  • ArkUI 声明式开发
  • DevEco Studio
  • Stage 模型应用结构
  • Ability Kit
http://www.jsqmd.com/news/1209665/

相关文章:

  • SpringBoot+Vue反欺诈平台源码,带用户管理与音视频素材上传功能
  • 原生木浆卷纸推荐:联盛森宝天然优选 - MXyuyu
  • 2026四川美国留学机构哪家好?10家热门中介逐项比较与申请家庭选择建议 - 环球新视野
  • 必看使用误区梳理指南!赣州锌钢铝合金百叶窗厂家/通风防雨空调外机罩格栅网推荐锦锋诚瑞金龙南信丰大余上犹崇义安远定南全南宁都于都兴国会昌寻乌石城工程金属百叶大厂! - 奋斗者888
  • 旧衣回收还是捐赠?揭秘闲置衣物去向,爱宝拉回收让环保更透明高效 - 快递物流资讯
  • Pocket-TTS与CALM:端侧CPU实时语音合成的范式突破
  • 2026年7月最新唐山宝珀官方售后客服中心地址电话及服务网点分布 - 宝珀官方售后服务中心
  • 2026年7月最新亨得利官方服务项目及价格查询|电话和完整地址权威信息公告 - 亨得利官方博客
  • 说嵌入式不能用C++的,你们写过超过10万行的嵌入式项目吗?
  • 2026甄选:老房地面翻新专业服务公司实力解析 - 甄选服务推荐
  • 基于SpringBoot的社区优选商城(Java+SpringBoot+MySQL)| 计算机毕业设计 附源码论文PPT
  • 2026广州漏水维修处理攻略|厨卫、阳台、外墙、屋顶与地下室处理|常见漏点处理及服务选择 - 盛隆防水
  • 印度理工海德拉巴分校揭示多模态大模型的视觉调度秘密
  • 鸿蒙 ArkTS 实战:Interview Simulator 从轻量生成到草稿管理完整解析
  • OpenAI是否重返机器人赛道?事实核查与技术趋势分析
  • 2026广州漏水维修实用攻略|厨卫、阳台、外墙、屋顶与地下室处理|靠谱防水门店怎么选 - 盛隆防水
  • 劳力士官方售后服务中心地址及客服服务电话实地考察报告_多信源验证(2026年7月最新) - 劳力士服务中心
  • Claude Code本地部署全指南:Node.js+Git+VS Code三步打通AI编程通路
  • 积家中国官方售后服务中心|服务电话及24小时维修地址权威信息公告(2026年7月最新) - 积家官方售后服务中心
  • Matlab版AdaBoost及其特征选择改进算法合集(含训练测试脚本与可视化工具)
  • 2026深圳搬家怎么收费多少钱?全国连锁及本土老牌正规搬家公司报价全解析 实用省钱攻略+避坑指南 专业搬家服务商甄选 - 厚道搬家
  • 正规流量卡在哪里领?2026 四大运营商官方授权流量卡领取入口详解!全网唯一正规手机卡办理渠道、领取方法、避坑大全 - 172号卡
  • 2026 年新发布:江阴评价高的 微型钢管桩订制厂家选哪家,颠覆想象:这小家伙如何解决超高强度地基难题? - 鉴选官
  • 奥地利与维也纳工业大学如何让机器自动编写人类可读“行事准则“
  • 嵌入式Linux驱动调试:printk的9个高阶用法,最后一个是救命级
  • 微信小程序毕业设计:睡眠助手系统(含Java后端源码、开题报告、答辩PPT与操作演示视频)
  • 芜湖车灯升级首选:启恒灯改深度测评12 年本地老店凭什么成为车主公认的靠谱选择 - 优企甄选
  • Web项目线上部署的本质:从环境鸿沟到Docker化工程实践
  • 【双一流高校主办、EI快稳检索】第五届图像处理、目标检测与跟踪国际学术会议(IPODT 2026)
  • 2026年7月最新佛山百达翡丽官方售后客户服务热线与维修网点地址汇总 - 百达翡丽官方售后中心