Mealora——鸿蒙原生应用开发

3596 字
18 分钟
Mealora——鸿蒙原生应用开发

Mealora,中文名为“食光簿”,是一款围绕个人饮食记录与日常用餐决策设计的鸿蒙原生应用。

它解决的不是复杂餐饮系统的问题,而是生活里更高频、更具体的场景:今天吃什么、常做哪些菜、冰箱里还有什么食材、最近一段时间吃饭花了多少钱,以及这些记录能不能被长期保存下来。

从技术栈上看,Mealora 是一个基于 HarmonyOS 6.1 的 ArkTS / ETS 原生应用。项目采用 ArkUI 声明式 UI 构建界面,通过 Harmony Design System 相关组件组织底部导航与材质视觉效果,数据层使用 @kit.ArkDatapreferences 做本地持久化,并借助 AppStorage 在页面之间同步状态。

模块技术选择
运行平台HarmonyOS 6.1,支持 phone、tablet、2in1
开发语言ArkTS / ETS
UI 框架ArkUI 声明式组件、Navigation、SymbolGlyph
设计组件@kit.UIDesignKit 中的 HDS Tabs 与材质效果
状态管理@State@StorageLink@StoragePropAppStorage
数据持久化@kit.ArkData preferences,本地 JSON 序列化
系统能力相册/拍照选择、本地备份、隐私窗口权限

项目中用到的华为开发者文档#

下面是 Mealora 项目中实际用到的 HarmonyOS 能力,以及对应的华为开发者文档链接:

entry/src/main/module.json5

应用模块配置、入口 Ability、设备类型、权限声明

Index.etsIndexHds.ets

页面容器和页面导航

今天 / 菜谱 / 记录 / 库存 / 我的

底部五个业务 Tab 导航

@StorageLink@StoragePropAppStorage

跨页面状态同步

MealoraDataStore.etspreferencesJSON

本地轻量数据持久化

菜谱 / 记录 / 库存照片能力

图片展示、相册图片选择、记录图片

EntryBackupAbility.ets 本地 JSON 备份

本地数据备份与恢复

项目定位#

Mealora 的核心定位可以概括为一句话:把“吃什么”和“吃过什么”放进同一个闭环里。

很多饮食类应用会从菜谱库开始,但 Mealora 更偏向个人使用场景。它先帮助用户在“今天”这个时间点做选择,再把选择沉淀为记录,并进一步影响库存和购物清单。这样一来,应用不只是一个菜谱本,也不是单纯的账本,而是一个围绕日常饮食形成的轻量生活系统。

项目主模块为 entry,入口页面使用 Navigation 承载应用框架,底部通过五个 Tab 分发到不同功能页:

页面作用
今天根据餐次、预算、时间和库存推荐吃什么
菜谱管理个人菜谱、分类、收藏、食材和步骤
记录记录每一餐,并统计餐次、花费和自做/外食比例
库存管理食材库存、临期状态和购物清单
我的管理主题、用餐偏好、本地数据、隐私与权限

功能设计#

今天:从决策开始#

“今天”页是 Mealora 的主入口。页面根据早餐、午餐、晚餐、夜宵四类餐次组织候选菜品,并结合预算上限、烹饪时间、库存状态进行筛选和排序。

源码中可以看到,今日页维护了菜品转盘、当前餐次、预算限制、烹饪时间限制、库存 JSON、菜谱 JSON、记录 JSON 等状态。用户点击“开始抽签”时,页面并不是简单随机一个名字,而是会先根据当前餐次取出候选列表,再结合成本、耗时和临期食材等条件计算优先级。

这个设计让“随机”变得更有生活感:它不是完全盲选,而是在用户已经设定的约束里给出一个可以执行的选择。

菜谱:个人菜品知识库#

菜谱页负责管理用户自己的菜谱数据。每一道菜可以包含分类、标签、食材、步骤、时间、成本、难度、热量和图片。

它的意义不只是展示菜名,而是把一道菜拆成可复用的数据结构。菜谱里的食材可以推送到购物清单,菜品也可以同步到“今天”页的候选列表。这样,菜谱模块就不再是孤立的内容页,而是参与到整个应用的数据流里。

记录:把吃过的饭沉淀下来#

记录页对应的是“吃过什么”。它支持按日期、餐次筛选,也会统计今日餐次、总花费、自做和外食情况。

在数据结构上,一条记录包含日期、餐次、菜名、来源、地点、花费、口味、推荐理由和图片等字段。这样设计的好处是,记录既能满足简单回看,也能支持后续做统计分析。

从工程角度看,记录页和今天页之间存在明确的数据联动。用户在今天页点击“记一餐”后,数据层会写入记录 JSON,并通过信号更新记录页状态。

库存:让推荐和采购有关联#

库存页负责管理食材数量、位置、保质期和购物清单。它不是单纯的列表,而是会把库存状态拆成“库存、临期、缺货”等关注点。

当库存中存在快过期或缺货的食材时,页面会将这些项目置顶提醒。购物清单也不是完全手工输入,它可以由今日推荐或菜谱食材自动生成。这样,用户从“想吃某道菜”到“补齐食材”之间的路径会更短。

我的:设置、备份与隐私#

“我的”页承担的是偏好和数据管理。用户可以调整主题与悬浮栏、设置预算和用餐时间偏好、查看购物清单、生成本地 JSON 备份、导入备份数据,也可以查看隐私与权限相关说明。

项目还申请了 ohos.permission.PRIVACY_WINDOW 权限,用于在后台或最近任务缩略图中保护饮食记录隐私。对于一款记录生活数据的应用来说,这类细节会直接影响使用信任感。

数据流#

Mealora 的数据层由 MealoraDataStore 统一管理。它封装了本地 preferences 的读写逻辑,并将关键数据同步到 AppStorage

整体数据流可以理解为:

  1. 应用启动后,EntryAbility 初始化数据存储。
  2. MealoraDataStore 从 preferences 读取本地数据。
  3. 数据被写入 AppStorage,页面通过 @StorageLink@StorageProp 订阅。
  4. 用户在页面中新增、修改、删除数据。
  5. 页面调用数据存储方法,将新数据写回 preferences。
  6. 数据层触发 changed signal,相关页面刷新视图。

这里没有引入远程数据库,也没有依赖第三方后端服务。对 Mealora 这样的个人工具来说,本地优先能带来更快的响应速度和更低的维护成本。

界面展示#

下面把五张长截图整理成横向模块卡片。每个卡片都对应一个业务 Tab,图片被限制在手机预览尺寸内,避免在文章中占据过长篇幅。

01 / 今天

完成一次用餐决策

页面顶部给出日期和推荐策略,例如“晚餐优先消耗临期”。中间的晚餐抽签从候选菜中给出结果,并展示推荐理由、预计耗时、预计花费和待补齐食材。

这个界面的重点是把推荐结果和执行动作放在一起。用户看到推荐后,可以继续补齐清单,也可以直接点击“记一餐”写入今日记录。

图片1:今天页的晚餐抽签与餐桌计划
图片 1:今天页的晚餐抽签与餐桌计划
02 / 菜谱

管理自己的菜品库

菜谱页提供搜索框、分类筛选和右下角新增入口。搜索支持按菜名、标签或分类查找,分类覆盖收藏、早餐、午餐、晚餐、夜宵等常用场景。

截图处于空状态,页面没有简单留白,而是提示用户切换分类或点击加号添加内容,降低第一次使用时的理解成本。

图片2:菜谱页的搜索、分类与新增入口
图片 2:菜谱页的搜索、分类与新增入口
03 / 记录

统计每一餐的痕迹

记录页上方展示本月与今日概览,包括餐次、花费、自做/外食比例。中间是本周记录统计,下面通过“今天 / 本月”和餐次筛选组织时间线。

这部分的工程价值在于结构化记录:只要每条记录包含餐次、花费、来源和日期,后续就可以自然生成统计结果。

图片3:记录页的餐次统计、周记录和时间线
图片 3:记录页的餐次统计、周记录和时间线
04 / 库存

将食材状态转化为行动

库存页顶部用数字卡片展示库存、临期和缺货数量,中间给出需要处理的提醒,再通过补货进度展示从识别缺口到已入库的流程。

临期食材会影响今日推荐,缺货项可以进入购物清单。用户不需要在多个页面之间反复核对,系统会把库存状态转化成下一步行动。

图片4:库存页的库存统计、补货进度和分类清单
图片 4:库存页的库存统计、补货进度和分类清单
05 / 我的

集中管理偏好和本地数据

“我的”页集中放置主题与悬浮栏、用餐偏好、饮食分类、我的标签、购物清单、本地数据和隐私权限。

从架构上看,这一页更像应用控制台。预算、烹饪时间、主题、备份开关等配置会写入本地数据层,再影响其他页面的展示和推荐逻辑。

图片5:我的页的主题、用餐偏好、数据管理和隐私设置
图片 5:我的页的主题、用餐偏好、数据管理和隐私设置

技术总结#

Mealora 的技术特点主要体现在三个方面。

第一是鸿蒙原生开发。项目使用 ArkTS / ETS 编写,页面由 ArkUI 声明式组件构建,应用入口、页面导航、状态同步、系统权限和备份能力都遵循 HarmonyOS 应用模型。

第二是本地优先的数据设计。菜谱、库存、购物清单、记录、转盘候选菜等数据都通过 JSON 序列化后写入 preferences。相比直接上云,这种方式更轻量,响应更快,也更适合个人生活工具。

第三是模块之间的数据闭环。今天页会读取菜谱和库存,推荐结果可以写入记录,也可以生成购物清单;菜谱页可以补充购物清单;库存页又反过来影响推荐优先级。多个页面不是简单并列,而是围绕“吃饭”这一件事形成了循环。

从 UI 角度看,Mealora 也比较强调移动端手感。底部悬浮导航、卡片式信息组织、系统符号图标、主题背景和隐私保护,都让它更接近一个完整的原生应用,而不是简单的课程 Demo。

食光簿已成功上架鸿蒙应用市场

它像一本放在口袋里的小册子,把每天的饭点、花费和小小选择收进时间里。等很多天以后再翻开,屏幕里亮起的也许不只是菜单,还有那段认真生活过的日子。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Mealora——鸿蒙原生应用开发
https://lifepeace.cloud/posts/mealora-harmonyos-native-app/
作者
Pinero
发布于
2026-06-30
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Pinero
一个2.5次元的菠萝不吹雪
公告
带我去些你所爱的时刻
分类
标签
站点统计
文章
2
分类
2
标签
2
总字数
10,229
运行时长
0
最后活动
0 天前

文章目录