基于 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.0
  image_picker: ^1.0.5
  flutter_tts: ^3.8.5
  sqflite: ^2.3.0
  cached_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: 内置常用菜谱,后续支持用户上传和社区分享。


注意事项

  1. 权限申请:相机、麦克风、存储权限需用户授权
  2. 网络依赖:AI 识别需要网络,离线可使用本地菜谱
  3. TTS 初始化:首次使用需等待 TTS 引擎加载完成

扩展建议

  • 接入真实 AI 服务(百度/华为 ML Kit)
  • 添加营养分析功能
  • 支持菜谱分享到社交平台
  • 添加视频教程支持
  • 多人协作烹饪模式

许可证

MIT License


今天吃什么?让 HarmonyCookBook 帮你决定!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐