Files
kitchen/CHANGELOG.md
Developer 346fc795f7 完善
2026-04-11 06:05:12 +08:00

17 KiB
Raw Blame History

Changelog

All notable changes to this project will be documented in this file.

[0.66.0] - 2026-04-11

Fixed — 阶段十九综合Bug修复+功能增强

  • 🐛 19.1 发现页更多按钮卡死tools_center_page.dart

    • 添加ToolsController安全检查防止未注册时崩溃
  • 🐛 19.2 烹饪计时器常用预设cooking_timer_page.dart

    • 添加18种常用烹饪步骤快捷添加煮鸡蛋/煮面条/炖汤等)
  • 🐛 19.3 菜谱详情显示全部数据recipe_detail_page.dart

    • 显示浏览量/营养成分/分类/标签/过敏原/时间等全部字段
    • 笔记icon改为横向滚动修复溢出
  • 🐛 19.4 口味偏好分类+标签修复user_preference_model.dart

    • 修复PreferenceCategory id字符串解析+children子分类+标签显示
  • 🐛 19.5 热门排行数据修复hot_repository.dart

    • 添加fallback机制period无数据时回退total
  • 🐛 19.6 购物清单按钮增大shopping_list_page.dart

    • 勾选/删除按钮增大至44x44点击区域
  • 🐛 19.7 我的页面左右滑动profile_page.dart

    • 使用PageView替代条件渲染支持手势滑动
  • 🐛 19.8 笔记保存后不显示cooking_note_page.dart

    • 修复异步保存未await+添加Obx响应式刷新
  • 🐛 19.9 深色模式跟随系统theme_service.dart

    • 添加DarkModeSource枚举支持system/manual模式
  • 🐛 19.10 字体大小全局生效main.dart

    • 通过GetCupertinoApp.builder设置全局textScaleFactor
  • 🐛 19.11 底部Tab栏高度+安全区glass_nav_bar.dart

    • 高度增加添加底部安全区域padding
  • 🐛 19.12 白色区域遮住底部navigation_widgets.dart

    • 移除SafeArea(bottom:false)GlassNavBar自行处理安全区域
  • 19.13 推荐分类层级导航category_browse_page.dart

    • 大类→小类→菜谱列表→详情新建CategoryBrowsePage
  • 🐛 19.14 今天吃什么GetX报错what_to_eat_page.dart

    • 控制器注册+加载优化+分类扁平化
  • 19.15 搜索显示相似结果search_page.dart + search_controller.dart

    • 无结果时提取关键词模糊搜索,显示相似推荐列表
  • ⚙️ 19.16 设置功能全局生效navigation_widgets.dart

    • 底部栏样式已全局生效(贴边/悬浮切换)
  • 19.17 用餐时段推荐页eating_times_page.dart

    • 基于eating_times.json创建5类时段浏览+菜谱列表
  • 19.18 网络请求优化api_service.dart

    • 增强日志拦截器+重试机制+统一离线检查+缓存解析修复

[0.65.0] - 2026-04-11

Added — 阶段任务补全12/13/14/16

  • 12.1 分享菜谱recipe_detail_page.dart

    • 菜谱详情页添加分享按钮CupertinoIcons.share
    • 生成格式化分享文本:菜名+食材列表+做法+来源标识
    • 调用 CommonUtils.shareContent底层 share_plus
  • 12.3 搜索热词从API获取search_controller.dart

    • 热门搜索词改为从 RecipeRepository.fetchTags() API 获取
    • API 获取失败时保留硬编码 fallback 热词10个经典菜名
    • onInit 时自动加载热词
  • 13.3 食材用量换算增强serving_scaler_page.dart

    • 添加 CupertinoSegmentedControl 切换「份量缩放」/「单位换算」Tab
    • 单位换算支持三大类:⚖️重量(g/kg/lb/oz/斤/两)、🥛容量(ml/L/杯/汤匙/茶匙)、🔢计数(个/根/片/瓣/条/块/把/勺/滴)
    • 实时计算换算结果,支持任意单位互转
    • 底部展示常用换算速查表8组常用换算
  • 14.3 过敏原警示增强allergen_checker.dart + recipe_detail_page.dart

    • AllergenChecker 添加食材替代建议映射11类过敏原→替代食材
    • 菜谱详情页过敏原警示区展示替代建议(🔄 标识)
  • 14.4 点赞/推荐系统完善recipe_detail_page.dart

    • 点赞按钮显示当前状态(实心/空心心形+颜色变化)
    • 推荐按钮显示当前推荐状态
    • 五星评分对话框1-5星+表情描述)
  • 14.8 浏览量统计+热度标签recipe_detail_page.dart

    • 菜谱详情页展示浏览次数+热度标签(🔥热门/🔥🔥非常热门)
  • 16.6 收藏页面UI重构favorites_page.dart

    • 全面重构为 iOS 26 Liquid Glass 风格
    • 所有卡片/按钮/筛选器使用 BackdropFilter + 半透明背景
    • 统一使用 DarkDesignTokens.glass / glassBorder 设计令牌
    • 空状态居中毛玻璃卡片,编辑栏底部毛玻璃效果
    • 收藏项卡片毛玻璃+细边框,选中态半透明高亮

[0.64.0] - 2026-04-11

Added — 阶段十八:浑水摸鱼功能补全

  • 18.1 烹饪笔记页面cooking_note_page.dart

    • 创建完整CookingNotePage支持按菜谱关联的笔记增删改查
    • 从菜谱详情页跳转时携带recipeId和recipeTitle
  • 18.2 过敏原检测实现allergen_checker.dart

    • 接入PreferenceController获取用户过敏原偏好设置
    • 实现11类过敏原关键词匹配检测坚果/海鲜/乳制品/蛋类/谷物/豆类/肉类/水果/蔬菜/菌类/调味品)
    • checkAllergens返回实际检测结果isAllergen正确判断
  • 18.3 份量缩放从菜谱导入serving_scaler_page.dart

    • ServingScalerPage支持ingredients和defaultServings参数
    • 从菜谱详情页跳转时携带真实食材列表,替代硬编码数据
    • 菜谱详情页添加"份量缩放"按钮
  • 18.4 菜单规划数据持久化meal_planner_page.dart

    • 接入StorageService+SharedPreferences按周保存/加载菜单数据
    • 自动检测周次变化,清理过期数据
  • 18.5 菜单规划从收藏添加meal_planner_page.dart

    • 实现_addFromFavorites方法CupertinoActionSheet选择收藏菜谱
    • 从FavoritesController获取收藏列表数据
  • 18.6 购物清单从菜谱添加 — 已确认实现

    • recipe_detail_page.dart已有_addToShoppingList方法和"购物"按钮
  • 18.7 食材详情营养信息ingredient_detail_page.dart + ingredient_nutrition_db.dart

    • 创建IngredientNutritionDb营养数据库60+种常见食材)
    • 页面展示:热量大字+营养概览(热量/蛋白质/脂肪/碳水/纤维)+营养素占比条+关键营养素标签+时令季节+选购技巧+储存方法
    • 列表卡片显示热量预览信息
    • 支持模糊匹配和分类回退
  • 18.8 营养中心饼图+折线图charts_widgets.dart + nutrition_report_page.dart

    • 新增MealTypePieChart组件早/午/晚/加餐热量分布饼图)
    • 营养报告页集成餐次分布饼图卡片
    • 现有图表完整:折线图(热量趋势)+营养素饼图+餐次分布饼图+进度条

新增文件

  • lib/src/services/data/ingredient_nutrition_db.dart — 食材营养数据库

[0.63.0] - 2026-04-11

Fixed — 控制器注册重复与生命周期统一管理

  • 🐛 控制器重复注册修复app_binding.dart

    • 移除 MainBinding 中 FavoritesController/ShoppingListController 的重复注册(已在 AppBinding 全局注册)
    • 移除 FavoritesBinding 中 FavoritesController/ToolsController 的重复注册
    • 移除 RecipeDetailBinding 中 FavoritesController/ActionController/ShoppingListController 的重复注册
    • 移除 ShoppingBinding 中 ShoppingListController 的重复注册(且与 AppBinding 的 put+permanent 方式冲突)
    • 移除 ToolsBinding 中 ToolsController 的重复注册
    • 移除 DiscoverBinding/HotBinding/WhatToEatBinding 中 HotController/WhatToEatController 的重复注册
    • 删除已清空的 Binding 类MainBinding, DiscoverBinding, HotBinding, WhatToEatBinding, ShoppingBinding, FavoritesBinding, RecipeDetailBinding, ToolsBinding
  • 🔧 AppBinding 全局控制器统一管理

    • 新增 ToolsController 全局注册permanent: true— 多页面使用,应全局管理
    • 新增 HotController 全局注册permanent: true— 主标签页+独立页面均使用
    • 新增 WhatToEatController 全局注册permanent: true— 主标签页+独立页面均使用
    • 添加分类注释,明确服务层/主题层/核心业务控制器的职责边界
  • 🧹 页面内联注册清理

    • favorites_page.dart — 移除 ToolsController 防御性 Get.put改为直接 Get.find
    • tools_center_page.dart — 移除 ToolsController 防御性 Get.put改为直接 Get.find
    • recipe_detail_page.dart — 移除 ActionController/FavoritesController 防御性 Get.put改为直接 Get.find
    • navigation_widgets.dart — 移除 MainNavigationController 的 Get.isRegistered 检查+Get.put改为直接 Get.find
    • app_routes.dart — 移除已删除 Binding 的路由引用

影响说明

此修复解决了以下问题:

  1. 状态丢失Get.put() 对已注册的同类型会替换实例,导致控制器状态数据丢失
  2. 注册方式冲突:同一控制器在不同 Binding 中混用 put/lazyPut生命周期不一致
  3. 内存泄漏风险:重复创建/销毁控制器实例造成不必要的资源消耗
  4. 防御性代码冗余:页面中 try-catch + Get.put 模式不再需要

[0.62.1] - 2026-04-10

Fixed — Linter 警告清理

  • 🧹 代码规范警告修复
    • glass_animations.dart - null 检查语法修复
    • nutrition_center_page.dart - 字符串插值优化
    • favorites_page.dart - separatorBuilder 参数规范化
    • tools_center_page.dart - separatorBuilder 参数规范化
    • ingredient_detail_page.dart - separatorBuilder 参数规范化
    • skeleton_loader.dart - separatorBuilder 参数规范化
    • meal_time_recommend_page.dart - separatorBuilder + 字符串插值修复
    • meal_planner_page.dart - separatorBuilder 参数规范化
    • allergen_checker_page.dart - separatorBuilder 参数规范化

Added — 代码分析与风险评估

  • 📋 CODE_ANALYSIS.md 文档新增
    • 闪退卡死风险点分析(高/中/低风险分级)
    • 性能优化机会清单
    • 新功能建议与优先级

[0.62.0] - 2026-04-10

Fixed — 营养中心崩溃修复

  • 🐛 营养中心报告按钮卡死闪退nutrition_center_page.dart / nutrition_report_page.dart

    • 添加 MealRecordController 初始化错误处理
    • 添加 null 检查,避免空指针异常
    • 导航时添加 try-catch 错误捕获
    • 显示友好的错误提示页面
  • 🐛 热门排行数据显示"暂无数据"hot_repository.dart

    • 添加详细调试日志,方便排查问题
    • 优化数据结构兼容性处理
    • 修复 period 参数传递错误
    • 添加错误提示和降级处理

Optimized — 性能优化

  • 今天吃什么动态筛选优化what_to_eat_controller.dart / what_to_eat_page.dart

    • 添加筛选条件调试日志
    • 优化空结果提示(显示已选筛选条件数量)
    • 改进错误信息显示
  • 启动加载优化home_page.dart

    • 添加骨架屏组件SkeletonLoader
    • 实现 12 秒超时保护
    • 添加缓存优先策略

Added — 测试工具

  • 🧪 接口验证脚本scripts/verify_nutrition_api.dart

    • 验证 API 接口连通性
    • 测试热门排行数据
    • 性能基准测试5 次迭代)
    • 彩色输出和详细统计
  • 📊 性能优化报告scripts/NUTRITION_PERFORMANCE.md

    • 接口验证结果汇总
    • API 接口文档摘要
    • 实际性能测试结果
    • 优化建议和验收标准
  • 📚 脚本工具说明scripts/README.md

    • 使用方法指南
    • 故障排查手册
    • 测试结果记录

Test Results — 测试结果

  • 接口连通性: 100% 成功率
  • 🟡 平均响应时间: 1393ms一般
  • 稳定性: 波动 < 100ms
  • 📈 优化空间: 目标 < 500ms

开发进度

已完成功能

  • 主题服务ThemeService+ 动态主题色 + 卡片滑动方向设置
  • 动画服务AnimationService
  • 国际化支持en, zh, zh_Hant
  • 权限管理服务
  • 自适应布局系统
  • GetX 全局状态管理
  • 标准组件库
  • 路由守卫系统
  • 繁体中文语言切换 + 弹窗/Toast 样式配置
  • 核心错误修复DeviceType/类型提升/空值检查等)
  • API 基础设施baseUrl + 模型 + Repository— 阶段一
  • 核心数据接入(首页真实数据)— 阶段二
  • 信息流 + 推荐系统 — 阶段三
  • 互动功能:点赞/推荐/浏览 — 阶段四
  • 用户偏好系统 — 阶段五
  • "今天吃什么"功能 — 阶段六
  • 热门排行 + 在线统计 — 阶段七
  • 缓存优化 + 离线支持 — 阶段八
  • API v2.0.0 迁移 — 13个接口文件精简到9个端点整合优先级5
  • 8个严重Bug修复 — 主页/搜索/收藏/口味偏好/热门排行/详情页优先级5
  • 搜索功能重写 — 直接调用APIiOS 26风格UI优先级4
  • 今天吃什么动态筛选 — 分类/标签/过敏原三重筛选优先级4
  • 热门排行HotItem模型 — 支持period/sortBy切换优先级3
  • 首页横向滑动卡片 — PageView+ListView双模式优先级3
  • 营养中心偏好修复 — 用户初始化+分类/标签加载优先级3
  • 实用工具入口 — 烹饪计时/用量换算/BMI/份量缩放优先级2
  • 页面拦截修复 — 路由守卫+PageRegistry注册优先级2
  • 布局溢出修复 — 标签栏横向滑动+工具区横向滚动优先级2
  • 工具中心布局溢出修复 — 移除Spacer+mainAxisExtent替代childAspectRatiov0.60.0
  • 浑水摸鱼功能补全 — 烹饪笔记+过敏原检测+份量缩放+菜单持久化+收藏添加+购物清单+食材营养+餐次饼图v0.64.0
  • 工具中心 — 数据模型+控制器+搜索/分类/频率统计+联网指示优先级4
  • 过敏原检查 — API数据加载+分类浏览+等级提示优先级3
  • 用餐时段推荐 — 时段自动推荐+分类搜索优先级3
  • 每周菜单规划 — 七日选择器+三餐规划+搜索/收藏选择优先级3
  • 食材详情查询 — 营养信息+分类+关联菜谱优先级3
  • 营养追踪仪表盘 — 首页环形图+四项指标优先级5
  • 搜索列表/今天吃什么Bug修复 — 空值检查+布局溢出优先级4
  • 统一 Controller Binding 注册 — AppBinding全局管理+移除重复注册优先级4
  • 崩溃修复 — 收藏页Obx崩溃+详情页营养全0检测v0.61.0
  • 阶段任务补全(12/13/14/16) — 分享菜谱+搜索热词API+单位换算+过敏原替代+点赞评分+浏览量统计+收藏页Liquid Glassv0.65.0

待开发功能(详见 UNFINISHED_FEATURES.md 阶段九~十三)

阶段九:架构修复+核心BugP0/P1

  • 🔴 热门排行点击跳转详情优先级5
  • 🔴 首页改用 Repository 层优先级5
  • 🟡 合并收藏功能去重优先级4
  • 🟡 合并搜索控制器去重优先级4
  • 🟡 多语言词条扩充优先级4
  • 🟢 聊天页面功能化或移除优先级3

阶段十代码质量提升P1/P2

  • 🟡 HiveService 数据迁移机制优先级3
  • 🟡 统一错误处理 AppException优先级4
  • 🟡 离线缓存策略优先级4
  • 🟢 DesignTokens 与 ThemeService 解耦优先级3

阶段十一:烹饪模式+营养仪表盘P1

  • 🟢 🍳 烹饪模式(步骤引导+计时器+语音播报优先级5
  • 🟢 📊 营养追踪仪表盘首页环形图优先级5
  • 🟢 🛒 菜谱食材一键加入购物清单优先级4
  • 🟢 📖 菜谱步骤图文模式优先级4

阶段十二:社交+通知增强P2

  • 🔵 📱 分享菜谱优先级4
  • 🔵 🔔 烹饪提醒通知优先级3
  • 🔵 🔍 搜索建议/热词优先级3
  • 🔵 📸 拍照记录优先级3

阶段十三AI+规划高级功能P3

  • 🔵 🤖 AI 菜谱推荐优先级2
  • 🔵 📅 每周菜单规划优先级3
  • 🔵 🧮 食材用量换算增强优先级2
  • 🔵 🌙 就寝提醒优先级1

技术栈

  • 框架: Flutter
  • 状态管理: GetX
  • 响应式布局: flutter_adaptive_scaffold
  • 动画系统: animations
  • 国际化: flutter_localizations + intl
  • 权限管理: permission_handler

贡献指南

  1. 遵循 iOS 风格设计规范
  2. 使用主题服务统一管理颜色和字体
  3. 使用动画服务统一管理动画效果
  4. 新增功能需更新 CHANGELOG.md
  5. 代码提交前运行 flutter analyze 确保无错误
  6. 新建页面必须支持 GetX 状态管理