This commit is contained in:
Developer
2026-04-11 06:05:12 +08:00
parent 855c801fca
commit 346fc795f7
50 changed files with 7697 additions and 1448 deletions

View File

@@ -2,6 +2,181 @@
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 警告清理
@@ -78,142 +253,6 @@ All notable changes to this project will be documented in this file.
-**稳定性**: 波动 < 100ms
- 📈 **优化空间**: 目标 < 500ms
## [0.61.0] - 2026-04-10
### Fixed — 崩溃与数据问题
- 🐛 **收藏页面点击更多工具卡死闪退**`favorites_page.dart` / `feature_binding.dart`
- 修复 GetX `Obx` 使用不当导致的崩溃
- 在 FavoritesBinding 中注册 ToolsController
- 添加 Controller 存在性检查,避免 `Get.find()` 抛出异常
- 🐛 **菜品详情页营养成分全0显示异常检测**`recipe_detail_page.dart`
- 添加营养成分全为0的异常检测
- 当热量/蛋白质/脂肪/碳水全部为0时显示"数据可能有误"标签
- 使用橙色标签提示用户数据可能存在问题
## [0.60.0] - 2026-04-10
### Fixed — 布局与性能问题
- 🐛 **工具中心布局溢出**`tools_center_page.dart`
- 移除 GridView 卡片内的 `Spacer()` 组件
- 使用 `mainAxisExtent: 140` 替代 `childAspectRatio`
- 缩小图标尺寸,优化卡片布局
## [0.59.0] - 2026-04-10
### Added — 工具中心功能
- 🛠️ **工具数据模型**`tool_item_model.dart`
- ToolItem: 工具项数据结构ID/名称/图标/分类/路由/联网状态)
- ToolCategory: 工具分类枚举(烹饪/健康/规划/查询/其他)
- ToolRegistry: 工具注册表,定义所有可用工具
- 🛠️ **工具控制器**`tools_controller.dart`
- 工具列表管理与加载
- 使用频率统计SharedPreferences 持久化)
- 搜索与分类过滤
- 常用工具推荐(按使用频率排序)
- 🛠️ **工具中心页面**`tools_center_page.dart`
- 搜索栏支持模糊搜索
- 分类标签筛选(全部/烹饪/健康/规划/查询)
- 工具网格布局(一行两个,大图标)
- 联网状态指示器(绿点=联网/红点=离线)
- 🛠️ **收藏页工具入口Bar**`favorites_page.dart`
- 显示常用工具快捷入口最多5个
- 更多工具入口按钮
- 按使用频率排序显示
- 🥜 **过敏原检查工具**`allergen_checker_page.dart`
- 从 API 加载过敏原数据
- 搜索食材过敏原信息
- 分类浏览(肉类/蔬菜/水产/水果/调料/其他)
- 显示过敏原等级和注意事项
- 🍽️ **用餐时段推荐**`meal_time_recommend_page.dart`
- 从 API 加载用餐时段数据
- 根据当前时间自动推荐用餐类型
- 按时段搜索推荐菜谱
- 支持早中晚餐/夜宵/下午茶分类
- 📅 **每周菜单规划**`meal_planner_page.dart`
- 一周七天日期选择器
- 早中晚三餐规划卡片
- 支持搜索菜谱/从收藏选择/自定义输入
- 今日规划进度统计
- 🥕 **食材详情查询**`ingredient_detail_page.dart`
- 从 API 加载食材标签数据
- 搜索食材营养信息
- 显示食材分类和关联菜谱数量
- 营养价值与选购技巧展示
### Changed — 路由配置更新
- 🛠️ **新增工具路由**`app_routes.dart`
- `/tools/allergen` → 过敏原检查
- `/tools/meal-time` → 用餐时段推荐
- `/tools/planner` → 每周菜单规划
- `/tools/ingredient` → 食材详情查询
- `/tools/nutrition` → 营养中心
- `/tools/stats` → 热门统计
### Docs — 开发清单更新
- 📝 **UNFINISHED_FEATURES.md 更新**
- 新增"十一+:工具中心"阶段5项任务全部完成
- 软件特性功能汇总新增5项工具功能
- 总体进度 71% → 73%
## [0.58.0] - 2026-04-10
### Fixed — 搜索列表和今天吃什么页面问题
- 🐛 **搜索列表点击详情卡死**`search_page.dart`
- 添加 recipeId 空值检查,防止无效 ID 导致页面跳转失败
- 添加 title 默认值,防止空标题显示异常
- 🐛 **今天吃什么随机选择后布局溢出**`what_to_eat_page.dart`
- Column 添加 `mainAxisSize: MainAxisSize.min` 防止内容撑开
- 文本添加 `maxLines``overflow` 防止长文本溢出
- 标签数量限制为 3 个,防止 Wrap 溢出
### Added — 阶段十一开发
- 📊 **营养追踪仪表盘卡片**`nutrition_dashboard_card.dart`
- 首页展示今日营养摄入环形图
- 显示热量/蛋白质/脂肪/碳水四项指标
- 点击"详情"跳转营养页面
- 完成阶段十一任务 11.2
- 📝 **首页集成营养仪表盘**`home_page.dart`
- 在"今日推荐"上方添加营养追踪卡片
- 使用 SliverToBoxAdapter 嵌入
### Docs — 开发清单更新
- 📝 **UNFINISHED_FEATURES.md 更新**
- 阶段十一 11.2 营养追踪仪表盘 → ✅ 已完成
- 阶段十一 11.3 食材加入购物清单 → ✅ 已存在
## [0.37.0] - 2026-04-09 — 已归档
> 主要包含通知功能移除、路由参数修复、UI组件修复、依赖修复
## [0.34.0] - 2026-04-09 — 已归档
> 主要包含Bug修复阶段六、菜谱详情页、收藏功能增强
---
## 开发进度
### 已完成功能
@@ -245,6 +284,18 @@ All notable changes to this project will be documented in this file.
-**实用工具入口** — 烹饪计时/用量换算/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 阶段九~十三)
@@ -257,7 +308,6 @@ All notable changes to this project will be documented in this file.
- 🟢 聊天页面功能化或移除优先级3
**阶段十代码质量提升P1/P2**
- 🟡 统一 Controller Binding 注册优先级4
- 🟡 HiveService 数据迁移机制优先级3
- 🟡 统一错误处理 AppException优先级4
- 🟡 离线缓存策略优先级4