- 新增 TastePreferenceService 用于管理用户口味偏好设置 - 实现菜谱分享功能,包括 RecipeShareService 和分享页面 - 更新平台工具类以支持鸿蒙系统检测 - 优化收藏页和农场商店页面的UI交互 - 添加新的参考文献和关于页面内容 - 更新API文档至v3.3.0版本
9.6 KiB
9.6 KiB
Changelog
All notable changes to this project will be documented in this file.
[0.98.9] - 2026-04-18
✨ 新增 — 菜谱分享本地存储 + 3天自动过期清理
菜谱分享数据推送(Flutter → PHP)
- 📤 RecipeShareService:新增菜谱分享数据推送服务,将菜谱数据推送到
recipe_share.php本地存储 - 🔄 先推送后生成:二维码海报生成前先推送数据到服务器,推送失败仍显示海报(降级策略)
- 📱 完整数据推送:推送菜谱标题/简介/封面/分类/食材/营养/评分等完整信息
- 🎯 CRUD接口:支持创建/更新/删除菜谱分享数据
recipe_share.php 重构
- 💾 本地JSON存储:从调用外部API改为本地JSON文件存储(
cache/kitchen/recipe_*.json) - ⏰ 3天自动过期:数据写入时自动设置3天过期时间,读取时自动检查并清理过期文件
- 🧹 清理接口:新增
?act=cleanup接口,手动清理所有过期数据 - 📋 数据目录共享:与
kitchen.php共享cache/kitchen/目录
二维码海报组件改进
- 🎨 加载提示:推送数据时显示 CupertinoActivityIndicator 加载动画
- 📦 RecipeModel传递:
showQrPosterSheet新增recipe参数,支持完整菜谱数据传递 - 🔗 recipe_action_bar:新增
recipe字段,详情页传递完整菜谱对象
修改文件
lib/src/services/data/recipe_share_service.dart— 新增菜谱分享数据推送服务lib/src/widgets/recipe_detail/interaction/recipe_qr_poster.dart— 改为先推送数据再生成二维码lib/src/widgets/recipe_detail/interaction/recipe_action_bar.dart— 新增 recipe 参数lib/src/pages/home/recipe_detail_page.dart— 传递 recipe 到操作栏docs/api/recipe_share.php— 重构为本地存储,新增3天过期清理功能
[0.98.8] - 2026-04-18
✨ 新增 — 二维码分享URL生成 + PHP分享页面
二维码URL生成
- 🔗 QR URL重构:二维码URL从硬编码改为通过
ApiConfig.baseUrl动态生成 - 📱 URL格式:
https://eat.wktyl.com/api/recipe_share.php?code=CP00001或?id=123 - 🆔 双重参数:支持
code(菜谱编码)和recipeId(数字ID)两种查询方式 - 🔄 降级策略:优先使用 code,无 code 时使用 recipeId,均无则生成 app scheme URL
PHP分享页面(recipe_share.php)
- 🍳 美观分享页:iOS风格设计,深色模式自适应,毛玻璃效果,流畅动画
- 📊 访问统计:自动记录每次扫码访问,按菜谱统计浏览量
- 📝 访问日志:记录IP、UA、来源等,保留最近200条
- 🏷️ OG标签:支持微信/社交媒体分享预览(标题/描述/封面图)
- 🔌 API代理:通过调用
api.php获取数据,不直接查询数据库 - 📈 管理接口:
?act=stats查看统计、?act=log查看日志、?act=api返回JSON
修改文件
lib/src/widgets/recipe_detail/interaction/recipe_qr_poster.dart— QR URL生成逻辑重构,新增 recipeId 参数lib/src/widgets/recipe_detail/interaction/recipe_action_bar.dart— 新增 recipeId 传递lib/src/pages/home/recipe_detail_page.dart— 传入 recipe.id 到二维码组件docs/api/recipe_share.php— 新增PHP分享页面
[0.98.7] - 2026-04-18
✨ 新增 — 口味偏好持久化 + 菜品详情页偏好标注
口味偏好持久化
- 💾 TastePreferenceService:新增口味偏好持久化服务,所有偏好值写入 SharedPreferences
- 🥗 饮食类型/辣度/口味/烹饪水平/人数/健康目标:6项偏好值全部持久化,应用重启后自动恢复
- 🔄 PreferencePage 接入:偏好设置页改用
TastePreferenceService读写,移除本地 State 临时变量 - 🧹 枚举统一:DietType/SpiceLevel/CookingLevel/ServingSize/HealthGoal 统一定义在
TastePreferenceService中
菜品详情页偏好标注
- 💚 我的偏好卡片:在菜品详情页过敏原警告下方新增「我的偏好」标注卡片
- 🌶️ 辣度匹配:对比用户辣度偏好与菜品口味标签,标注「很匹配/一般/不太匹配」
- 👅 口味匹配:对比用户甜/咸/酸偏好与菜品口味,计算匹配度
- 👨🍳 难度匹配:对比用户烹饪水平与菜品难度,标注匹配度
- 🥗 饮食类型匹配:检测菜品食材是否包含用户饮食禁忌(素食/纯素/低碳水/生酮/清真等)
- ⚠️ 过敏原标注:只标注用户选择的过敏原,显示「安全」或「含过敏原」
修改文件
lib/src/services/user/taste_preference_service.dart— 新增口味偏好持久化服务lib/src/pages/profile/settings/preference_page.dart— 接入 TastePreferenceServicelib/src/widgets/recipe_detail/info/recipe_taste_preference.dart— 新增菜品偏好标注组件lib/src/pages/home/recipe_detail_page.dart— 集成偏好标注组件lib/src/app_binding.dart— 注册 TastePreferenceService
[0.98.6] - 2026-04-18
✨ 新增与改进
软件信息页面
- 🖼️ 头部卡片图标:将 emoji 替换为应用图标
icon_128x128.png,图标与文本左右居中对齐 - 📦 assets/icons 注册:在
pubspec.yaml中添加assets/icons/资源目录
参考文献页面
- 📚 新增参考文献:从 8 条扩充至 18 条,覆盖 BMI、过敏原、特殊人群、烹饪安全、慢病防控、GI 数据库等
- 🏷️ 分类标签优化:分类名增加 emoji 前缀(🥗 营养健康、⚠️ 过敏原、⚖️ 体重管理等)
偏好设置页面(重写)
- 🥗 饮食类型:普通/素食/纯素/低碳水/生酮/地中海/清真
- 🌶️ 辣度偏好:不吃辣/微辣/中辣/重辣/变态辣
- 👅 口味偏好:甜度/咸度/酸度滑块调节
- 👨🍳 烹饪水平:厨房小白/入门选手/熟练厨师/厨艺大师
- 🍚 每餐人数:1-2人/3-4人/5人+
- 🎯 健康目标:减脂/增肌/控糖/心血管/肠胃/免疫/骨骼(多选)
- ✅ 偏好摘要卡片:底部汇总所有偏好设置
- 🔄 重置功能:一键重置所有偏好
路由修复
- 🐛 修复 /about 路由未注册:在
PageRegistry.registerAll中补充 about/privacyPolicy/guide 路由 - 🐛 修复 app_routes.dart 乱码:
'分类浏览'替换损坏的 Unicode 字符
[0.98.5] - 2026-04-18
✨ 新增 — 软件信息页面 + 了解我们页面
软件信息页面
- 📱 新增软件信息页面:展示应用版本、技术栈、构建信息、后端服务、设备信息、更新日志
- 🎨 毛玻璃头部卡片:渐变背景 + BackdropFilter 毛玻璃效果,展示应用名称和版本
- ⚙️ 技术栈展示:2×2 网格布局展示 Dart / GetX / Hive / Dio 技术栈
- 🔨 构建信息:版本号、内部版本号、打包时间、Build SDK,支持点击复制
- 🖥️ 后端服务信息:展示 PHP / Nginx / API 地址
- 📱 设备信息:操作系统、设备类型、Dart 版本(动态获取)、渲染引擎(三层检测+标注)、屏幕尺寸和像素密度
- 🎨 渲染引擎检测:三层检测机制(API → 引擎 → 平台),使用
defaultTargetPlatform+TargetPlatform.ohos精准识别 - 🐛 修复鸿蒙端设备信息显示 Unknown:
PlatformUtils.isHarmonyOS改用Platform.isOhos替代字符串匹配 - 🐛 修复鸿蒙端渲染引擎显示默认:改用
defaultTargetPlatform枚举匹配,鸿蒙端正确显示Impeller (平台) - 📋 更新日志:展示版本更新记录
- 🔓 隐藏开发者模式:连续点击 Flutter 标签 5 次激活开发者模式
- 📄 开源框架弹窗:展示所有依赖的开源协议
- 🔗 关于页面入口修改:软件信息从打开 URL 改为跳转 AppInfoPage
了解我们页面
- 📖 了解我们页面:新增
LearnUsPage,展示开发者信息、团队信息、官网链接和ICP备案号 - 🔗 关于页面入口:关于页面"了解我们"入口从打开外部链接改为跳转新页面
- 🎨 iOS风格UI:使用 CupertinoPageScaffold + DesignTokens 统一主题,支持深色模式
- 📋 链接确认弹窗:点击外部链接时弹出 CupertinoAlertDialog 确认,支持复制链接
修改文件
lib/src/pages/profile/app_info_page.dart— 新增软件信息页面lib/src/pages/profile/learn_us_page.dart— 新增了解我们页面lib/src/pages/profile/about_page.dart— 软件信息/了解我们入口改为跳转新页面
[0.98.4] - 2026-04-18
🐛 修复 — 小妈菜园交互优化 + 商店布局修复
变更
- 🔇 消息限流机制:添加 Toast 限流(5秒内最多2次,10秒内最多3次),重复消息自动过滤,避免气泡弹出过于频繁
- 🔄 消息系统统一:所有
Get.snackbar替换为ToastService,统一使用项目消息服务 - 📐 商店布局重构:种子商店卡片从单行布局改为上下分行(名称+购买按钮同行,信息标签换行),使用
Wrap防止溢出 - 📤 分享功能确认:
FarmShareUtil已支持图片+文本分享(Share.shareXFiles+text),无需修改
修改文件
lib/src/controllers/farm/farm_game_controller.dart— 添加消息限流、替换 Get.snackbarlib/src/controllers/farm/farm_shop_controller.dart— 替换 Get.snackbar 为 ToastServicelib/src/pages/tools/farm/farm_shop_page.dart— 重构卡片布局,信息标签和购买按钮分行
📌 已移除较早版本记录(0.98.3及之前),功能已归档至软件特性清单。