基于 Flutter + Riverpod + Image Picker 的鸿蒙智能菜谱应用,解决"今天吃什么"的灵魂拷问!
欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net
项目简介
每天纠结"今天吃什么"?HarmonyCookBook 来帮你!拍照识别食材、智能推荐菜谱、语音朗读步骤,让做饭变得简单有趣。
核心功能一览
| 功能 | 说明 |
|---|---|
| 拍照识别 | 调用鸿蒙相机 + AI 识别食材 |
| 智能推荐 | 根据冰箱存货推荐最佳菜谱 |
| 语音朗读 | 鸿蒙 TTS 引擎朗读烹饪步骤 |
| 菜谱收藏 | 收藏喜欢的菜谱方便查找 |
| 购物清单 | 自动生成缺失食材清单 |
| 元服务卡片 | 鸿蒙桌面卡片展示今日推荐 |
技术栈
| 技术 | 用途 |
|---|---|
| Flutter | 跨平台 UI 框架 |
| Riverpod | 状态管理 |
| image_picker | 图片选择(鸿蒙适配) |
| flutter_tts | 语音朗读 |
| sqflite | 本地菜谱数据库 |
| 鸿蒙 API 21 | TTS、相机、AI 能力 |
项目结构
lib/ ├── models/ # 数据模型 │ └── recipe.dart # 菜谱模型 ├── services/ # 业务服务 │ ├── ingredient_recognition.dart # 食材识别 │ └── recipe_recommender.dart # 菜谱推荐引擎 ├── screens/ # 页面 │ └── recipe_detail.dart # 菜谱详情页 └── main.dart # 应用入口 ohos/ └── entry/src/main/ets/plugins/ └── TtsPlugin.ets # 鸿蒙TTS插件快速开始
第一步:环境准备
- Flutter SDK 3.0+
- 鸿蒙 DevEco Studio
- 鸿蒙 6.0+ 设备或模拟器
第二步:添加依赖
pubspec.yaml:
dependencies:riverpod:^2.4.0image_picker:^1.0.5flutter_tts:^3.8.5sqflite:^2.3.0cached_network_image:^3.3.0第三步:运行项目
flutter pub get flutter run核心模块说明
1. 菜谱模型 (Recipe)
存储菜谱信息:
- 食材列表、烹饪步骤
- 烹饪时长、难度等级
- 标签分类(家常/快手/低卡等)
- 食材匹配度计算
2. 食材识别服务
识别流程:
拍照 → 图片处理 → 鸿蒙AI识别 → 返回食材列表 ↓ 识别失败时降级到模拟数据3. 菜谱推荐引擎
推荐策略:
- 按食材匹配度排序
- 按标签分类推荐
- 快速菜谱筛选(15分钟内)
- 随机推荐(不知道吃什么时)
4. 语音朗读 (TTS)
基于鸿蒙 TTS 引擎:
- 中文语音合成
- 可调节语速和音调
- 分步骤朗读
使用流程
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ 拍照识别 │ ──▶ │ 智能推荐 │ ──▶ │ 选择菜谱 │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ 手动输入食材 ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ 语音朗读 │ │ 食材管理 │ │ 跟随烹饪 │ └─────────────┘ └─────────────┘示例菜谱数据
| 菜名 | 时长 | 难度 | 标签 |
|---|---|---|---|
| 番茄炒蛋 | 10分钟 | 简单 | 家常、快手、下饭 |
| 红烧肉 | 60分钟 | 中等 | 硬菜、宴客 |
| 蒜蓉西兰花 | 8分钟 | 简单 | 健康、低卡 |
| 酸辣土豆丝 | 15分钟 | 简单 | 家常、快手 |
食材匹配算法
匹配度 = 已有食材 ∩ 菜谱所需食材 / 菜谱所需食材总数 示例: 冰箱有:番茄、鸡蛋、葱 番茄炒蛋需要:番茄、鸡蛋、盐、糖、葱 匹配度 = 3/5 = 60%鸿蒙特性适配
| 特性 | 说明 |
|---|---|
| TTS 引擎 | 鸿蒙原生语音合成 |
| 相机 API | 鸿蒙相机能力调用 |
| AI 识别 | 华为 ML Kit 食材识别 |
| 元服务卡片 | 桌面小组件展示推荐 |
| 深色模式 | 自适应系统主题 |
运行效果
- 拍照识别- 准确率高,支持常见食材
- 语音朗读- 双手不沾手机也能跟做
- 智能推荐- 减少食材浪费,省钱又省心
常见问题
Q: 识别不准确怎么办?
A: 建议在光线充足的环境拍照,食材摆放清晰可见。
Q: 支持哪些语音?
A: 目前支持中文普通话,后续会添加方言支持。
Q: 菜谱数据从哪来?
A: 内置常用菜谱,后续支持用户上传和社区分享。
注意事项
- 权限申请:相机、麦克风、存储权限需用户授权
- 网络依赖:AI 识别需要网络,离线可使用本地菜谱
- TTS 初始化:首次使用需等待 TTS 引擎加载完成
扩展建议
- 接入真实 AI 服务(百度/华为 ML Kit)
- 添加营养分析功能
- 支持菜谱分享到社交平台
- 添加视频教程支持
- 多人协作烹饪模式
许可证
MIT License
今天吃什么?让 HarmonyCookBook 帮你决定!