191 lines
8.3 KiB
Markdown
191 lines
8.3 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
## [0.33.0] - 2026-04-09
|
||
|
||
### Fixed
|
||
- 🐛 **Bug 修复** — 阶段六 + Bug 修复清单
|
||
- ✅ B.7 去掉右上角 DEBUG 标签 (`main.dart` 设置 `debugShowCheckedModeBanner: false`)
|
||
- ✅ B.5 修复发现页购物清单点击无反应 (`discover_page.dart` 添加路由跳转)
|
||
- ✅ B.8 修复发现页营养中心报告跳转到测试页 (改为 `/nutrition-report`)
|
||
- ✅ B.6 修复我的页面购物清单被拦截 (`app_routes.dart` 注册 PageRegistry)
|
||
- ✅ 发现页搜索栏添加跳转逻辑
|
||
- ✅ 发现页目标设置按钮添加跳转逻辑
|
||
- ✅ 注册缺失页面:goalSetting, shoppingList, search, nutritionReport
|
||
|
||
### Changed
|
||
- 🔄 `discover_page.dart` 快速操作区全部功能化
|
||
- 🔄 `main.dart` 关闭 DEBUG 标签显示
|
||
- 🔄 `app_routes.dart` 补充注册缺失页面到 PageRegistry
|
||
- 🔄 文档更新:UNFINISHED_FEATURES.md 进度更新
|
||
|
||
## [0.32.0] - 2026-04-09
|
||
|
||
### Added
|
||
- 🔍 **搜索功能** — 阶段六 6.4 完成
|
||
- 新增 `lib/src/controllers/search/search_controller.dart` 搜索控制器
|
||
- 新增 `lib/src/pages/search/search_page.dart` 搜索页面
|
||
- 支持热门搜索标签快速选择
|
||
- 支持搜索历史记录(本地持久化)
|
||
- 支持清空/删除单条历史记录
|
||
- 搜索结果列表展示
|
||
- 首页搜索栏点击跳转搜索页
|
||
- 💀 **骨架屏加载效果** — 阶段六 6.2 完成
|
||
- 新增 `lib/src/widgets/skeleton/shimmer_effect.dart` 闪光动画组件
|
||
- 新增 `lib/src/widgets/skeleton/feed_card_skeleton.dart` 信息流卡片骨架屏
|
||
- 首页加载时显示3个骨架卡片,提升感知性能
|
||
- 🎯 **交互按钮优化** — 阶段六 6.1 完成
|
||
- 首页卡片交互按钮从16px增大到20px
|
||
- 点击热区从2px padding扩大到8px horizontal + 6px vertical
|
||
- 激活状态添加背景色高亮
|
||
- 统计图标从14px增大到18px
|
||
|
||
### Changed
|
||
- 🔄 `home_page.dart` 集成骨架屏、优化交互按钮、搜索栏跳转
|
||
- 🔄 `HiveService` 新增搜索历史存储支持
|
||
- 🔄 `app_routes.dart` 注册 `/search` 路由
|
||
|
||
## [0.31.0] - 2026-04-09
|
||
|
||
### Added
|
||
- 🛒 **购物清单功能** — 阶段四100%完成
|
||
- 新增 `lib/src/controllers/shopping/shopping_list_controller.dart` 购物清单控制器
|
||
- 新增 `lib/src/pages/shopping/shopping_list_page.dart` 购物清单页面
|
||
- 支持添加/删除/勾选/清空已购物品
|
||
- 分类展示(蔬菜/肉类/海鲜/谷物/乳制品/调味品/水果/其他)
|
||
- 筛选功能:显示/隐藏已购 + 分类筛选
|
||
- 进度条显示购物完成度
|
||
- 我的页面功能网格添加购物清单入口
|
||
- 首页卡片添加「添加到购物清单」按钮
|
||
|
||
### Changed
|
||
- 🔄 `profile_home.dart` 功能网格添加购物清单入口
|
||
- 🔄 `app_routes.dart` 注册 `/shopping-list` 路由
|
||
- 🔄 `HiveService` 新增 `getAllShoppingItemsWithKeys()` 方法
|
||
- 🔄 `home_card_carousel.dart` 添加购物车按钮,支持从菜谱添加食材
|
||
|
||
## [0.30.0] - 2026-04-09
|
||
|
||
### Added
|
||
- 🎯 **用户目标设置页面** — 阶段三最后一项,阶段三100%完成
|
||
- 新增 `lib/src/pages/nutrition/goal_setting_page.dart` 目标设置页
|
||
- 快速预设:🧘减脂(1500kcal) / ⚖️均衡(2000kcal) / 💪增肌(2500kcal)
|
||
- 四项滑块调整:热量/蛋白质/脂肪/碳水,各自独立范围和步进
|
||
- 💡 营养小贴士卡片
|
||
- 保存后写入 HiveService.userGoals 持久化
|
||
|
||
### Changed
|
||
- 🔄 `NutritionCenterPage` 热量概览区新增「🎯 设置目标」入口
|
||
- 🔄 `app_routes.dart` 注册 `/goal-setting` 路由
|
||
|
||
## [0.29.0] - 2026-04-09
|
||
|
||
### Added
|
||
- 📊 **营养报告页面(fl_chart 图表)**
|
||
- 新增 `lib/src/pages/nutrition/nutrition_report_page.dart` 营养报告页(周/月切换+热量趋势+营养素占比+摘要统计)
|
||
- 新增 `lib/src/widgets/charts/nutrition_line_chart.dart` 折线趋势图组件(fl_chart LineChart封装,支持目标线/触摸提示/自适应刻度)
|
||
- 新增 `lib/src/widgets/charts/nutrition_pie_chart.dart` 营养素占比饼图组件(fl_chart PieChart封装,蛋白质/脂肪/碳水三色展示+图例)
|
||
- 🏗️ **全局可复用骨架组件**
|
||
- 新增 `lib/src/widgets/base/app_page_scaffold.dart` 页面骨架组件(AppPageScaffold/AppSectionHeader/AppCard/AppStatItem/AppProgressBar)
|
||
- 统一 iOS26 风格页面结构:导航栏/加载/空态/错误/内容五种状态
|
||
- 📁 **目录结构按功能域重组**
|
||
- `models/` 按功能域分子目录:api/recipe/feed/nutrition/user/shopping/note
|
||
- `controllers/` 按功能域分子目录:feed/home/nutrition/user/favorites/discovery
|
||
- 删除未使用的 `product_model.dart` 和 `theme_model.dart`
|
||
- 全局更新 41 个文件的导入路径
|
||
|
||
### Changed
|
||
- 🔄 `MealRecordController` 扩展周/月营养聚合方法(weeklyNutrition/monthlyNutrition/getAggregatedNutrition/getWeeklyAverageCalories/getMonthlyAverageCalories)
|
||
- 🔄 `NutritionCenterPage` 导航栏新增「📊 报告」按钮跳转营养报告页
|
||
- 🔄 `app_routes.dart` 注册 `/nutrition-report` 路由
|
||
|
||
### Fixed
|
||
- 🐛 `app_page_scaffold.dart` navigationBar 类型错误(Widget → CupertinoNavigationBar)
|
||
- 🐛 `app_page_scaffold.dart` refresh protected member 访问错误
|
||
|
||
## [0.28.0] - 2026-04-09
|
||
|
||
### Added
|
||
- 📊 **fl_chart 本地化 + 鸿蒙适配**
|
||
- 拉取 `fl_chart 1.2.0` 源码到 `packages/fl_chart/`(本地依赖)
|
||
- 版本号改为 `1.2.0-ohos.1` 标识鸿蒙适配版
|
||
- 创建 `packages/fl_chart/ohos/` 鸿蒙平台目录结构
|
||
- `ohos/Index.ets` 模块入口
|
||
- `ohos/oh-package.json5` 依赖配置
|
||
- `ohos/build-profile.json5` 构建配置
|
||
- `ohos/src/main/module.json5` 模块声明
|
||
- `ohos/src/main/ets/components/plugin/FlChartPlugin.ets` 空壳插件
|
||
- `pubspec.yaml` 引入本地 fl_chart:`path: packages/fl_chart`
|
||
- 📋 **未完成功能清单文档**
|
||
- 新增 `docs/dev/UNFINISHED_FEATURES.md` 记录阶段三~五共19项未完成任务
|
||
|
||
### Fixed
|
||
- 🔧 **卡死/闪退问题修复(10项)**
|
||
- #1 Hive `late Box` 未初始化 → 改为 `Box?` + `_assertInitialized()`
|
||
- #2 ApiService 缓存竞态 → `late CacheOptions` 改为 `CacheOptions?` + `Completer`
|
||
- #3 Get.find 未注册 Controller → 加 `Get.isRegistered<T>()` 判断
|
||
- #4 Platform API Web 崩溃 → 条件导入 + `kIsWeb` 检查 + Web stub
|
||
- #5 网络请求无超时 → `_isOffline()` 加 3s 超时
|
||
- #6 runWithLoading 嵌套 → 布尔值改为计数器 `_loadingCount`
|
||
- #8 SharedPreferences 未初始化 → `late` 改为 `?` + 安全调用
|
||
- #10 中间件拦截循环 → `/standards-violation` 路由跳过校验
|
||
- #9 LoggerService 未初始化 → `_logger` 改为 `Logger?`(上一轮已修)
|
||
- #11 MediaQuery 空值崩溃 → try-catch + 默认值(上一轮已修)
|
||
|
||
### Changed
|
||
- 🔄 `docs/dev/UNFINISHED_FEATURES.md` 3.1 fl_chart 状态更新为 ✅ 已引入
|
||
|
||
|
||
|
||
---
|
||
|
||
## 开发进度
|
||
|
||
### 已完成功能
|
||
- ✅ 主题服务(ThemeService)
|
||
- ✅ 动画服务(AnimationService)
|
||
- ✅ 国际化支持(en, zh, zh_Hant)
|
||
- ✅ 权限管理服务
|
||
- ✅ 自适应布局系统
|
||
- ✅ GetX 全局状态管理
|
||
- ✅ 标准组件库
|
||
- ✅ 路由守卫系统
|
||
- ✅ 繁体中文语言切换 + 弹窗/Toast 样式配置
|
||
- ✅ 核心错误修复(DeviceType/类型提升/空值检查等)
|
||
- ✅ API 基础设施(baseUrl + 模型 + Repository)— 阶段一
|
||
- ✅ 核心数据接入(首页真实数据)— 阶段二
|
||
- ✅ 信息流 + 推荐系统 — 阶段三
|
||
- ✅ 互动功能:点赞/推荐/浏览 — 阶段四
|
||
- ✅ 用户偏好系统 — 阶段五
|
||
- ✅ "今天吃什么"功能 — 阶段六
|
||
- ✅ 热门排行 + 在线统计 — 阶段七
|
||
- ✅ 缓存优化 + 离线支持 — 阶段八
|
||
|
||
### 待开发功能(优先级 P2-P3)
|
||
- 📋 "今天吃什么"功能 — 阶段六(P2)
|
||
- 📋 热门排行 + 在线统计 — 阶段七(P3)
|
||
- 📋 缓存优化 + 离线支持 — 阶段八(P3)
|
||
|
||
---
|
||
|
||
## 技术栈
|
||
|
||
- **框架**: Flutter
|
||
- **状态管理**: GetX
|
||
- **响应式布局**: flutter_adaptive_scaffold
|
||
- **动画系统**: animations
|
||
- **国际化**: flutter_localizations + intl
|
||
- **权限管理**: permission_handler
|
||
|
||
---
|
||
|
||
## 贡献指南
|
||
|
||
1. 遵循 iOS 风格设计规范
|
||
2. 使用主题服务统一管理颜色和字体
|
||
3. 使用动画服务统一管理动画效果
|
||
4. 新增功能需更新 CHANGELOG.md
|
||
5. 代码提交前运行 `flutter analyze` 确保无错误
|
||
6. **新建页面必须支持 GetX 状态管理**
|