408 lines
22 KiB
Markdown
408 lines
22 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
|
||
## [0.97.36] - 2026-04-17
|
||
|
||
### 🔧 修复 — Web端 Platform._operatingSystem 崩溃
|
||
|
||
#### 问题描述
|
||
- 🐛 **Web端崩溃**:`Unsupported operation: Platform._operatingSystem`
|
||
- 🐛 **根因**:`crash_guard_service.dart` 直接使用 `dart:io` 的 `Platform` 类
|
||
- 🐛 **影响范围**:错误报告生成(L137) + 错误对话框显示(L426)
|
||
|
||
#### 修复方案
|
||
- 🔄 **移除直接导入**:删除 `import 'dart:io'`,改用项目已有的 `PlatformUtils`
|
||
- 🛡️ **使用兼容层**:`Platform.operatingSystem` → `PlatformUtils().operatingSystemName`
|
||
- ✅ **Web端安全**:`PlatformUtils` 使用条件导入,Web端返回 `'Web'`
|
||
|
||
#### 修改文件
|
||
- `lib/src/services/crash_guard_service.dart` — 移除dart:io导入,使用PlatformUtils
|
||
|
||
|
||
## [0.97.35] - 2026-04-17
|
||
|
||
### 🔧 修复 — Web版API超时错误 (v2)
|
||
|
||
#### 问题描述
|
||
- 🐛 **超时错误**:Web端显示"加载失败 - Exception: 加载超时,请检查网络连接"
|
||
- 🐛 **根因1**:`connectTimeout: 2秒` 太短,Web端经过CORS代理链路长
|
||
- 🐛 **根因2**:请求策略错误(先走代理再直连),代理不稳定导致延迟更高
|
||
|
||
#### 修复方案
|
||
- ⏱️ **增加超时时间**:Web端 `connectTimeout` 从 2s → **10s**
|
||
- 🔄 **反转请求策略**:**优先直连** → 失败后用CORS代理备用
|
||
- 📡 **增强错误检测**:新增 `_shouldTryProxy()` 方法,检测 connectionTimeout/connectionError/statusCode=0/5xx 等情况触发代理回退
|
||
- 🛡️ **全方法覆盖**:GET/POST/PUT/DELETE 四种请求方法均支持新策略
|
||
|
||
#### 请求流程变更
|
||
```
|
||
旧流程 (v1): 浏览器 → CORS代理(2s超时) → API服务器 ❌ 超时
|
||
新流程 (v2): 浏览器 → 直连API(10s超时) ✅ → 失败时 → CORS代理备用
|
||
```
|
||
|
||
#### 修改文件
|
||
- `lib/src/services/api/api_service.dart` — Web端10s超时、优先直连、_buildProxyUrl备用、_shouldTryProxy检测
|
||
|
||
|
||
## [0.97.34] - 2026-04-17
|
||
|
||
### 🔧 修复 — Web版API连接错误
|
||
|
||
#### 问题描述
|
||
- 🐛 **CORS代理失败**:Web端使用 corsproxy.io 代理服务不稳定,导致 API 请求失败
|
||
- 错误信息:`ApiException(unknown). The connection errored. The XMLHttpRequest onerror callback was called.`
|
||
|
||
#### 修复方案
|
||
- 🔄 **直接请求回退机制**:CORS代理失败时自动尝试直连原始URL
|
||
- 📡 **智能错误检测**:新增 `_isCorsProxyError()` 方法识别 CORS 代理相关错误
|
||
- 🛡️ **全方法覆盖**:GET/POST/PUT/DELETE 四种请求方法均支持回退逻辑
|
||
- 📝 **详细日志**:添加调试日志便于追踪请求路径(代理/直连)
|
||
|
||
#### 技术实现
|
||
```dart
|
||
// 核心流程:
|
||
// 1. 尝试通过 CORS 代理请求 (corsproxy.io/?url=...)
|
||
// 2. 失败时检测是否为代理错误 (_isCorsProxyError)
|
||
// 3. 自动切换为直接请求原始 URL
|
||
// 4. 直连失败则抛出原始错误
|
||
```
|
||
|
||
#### 修改文件
|
||
- `lib/src/services/api/api_service.dart` — 新增 _buildDirectUrl、_isCorsProxyError 方法;修改 get/post/put/delete 和 _executeWithOfflineCheck 支持回退
|
||
|
||
|
||
## [0.97.33] - 2026-04-17
|
||
|
||
### ✨ 新增 — 隐私政策与用户协议页面 + 首次引导页
|
||
|
||
#### 新增功能
|
||
- 🔒 **隐私政策页面**:新增隐私政策与用户协议页面,支持分段切换和左右滑动浏览
|
||
- 📋 **公开组件**:`PrivacyPolicyContent` 和 `UserAgreementContent` 为公开类,可供其他页面调用
|
||
- 🔗 **关于页面跳转**:关于页面"软件协议"入口点击后跳转至新页面
|
||
- 🎬 **首次引导页**:新增引导页,首次启动展示欢迎信息和协议,用户同意后方可使用
|
||
- ✅ **协议拦截**:启动时检查协议同意状态,未同意则跳转引导页,不同意则退出应用
|
||
|
||
#### 修改文件
|
||
- `lib/src/pages/profile/privacy_policy_page.dart` — 新增隐私政策与用户协议页面
|
||
- `lib/src/pages/profile/guide_page.dart` — 新增首次引导页(欢迎+协议同意)
|
||
- `lib/src/pages/profile/about_page.dart` — 软件协议入口跳转新页面
|
||
- `lib/src/config/app_routes.dart` — 注册 `/privacy-policy`、`/guide` 路由
|
||
- `lib/main.dart` — 启动时检查协议同意状态
|
||
|
||
|
||
## [0.97.32] - 2026-04-17
|
||
|
||
### ✨ 新增 — 点餐助手分享功能 + UI布局优化 + 权限页面
|
||
|
||
#### 新增功能
|
||
- 📝 **生成文本分享**:列表区域新增"生成文本"按钮,调用系统分享接口分享格式化订单文本
|
||
- 🖼️ **生成图片分享**:列表区域新增"生成图片"按钮,弹出预览卡片(完整渲染所有菜品),确认后截图生成PNG图片并调用系统分享
|
||
- 📤 **分享区域**:独立的"分享订单"卡片组件,与底部栏"关闭订单/生成账单"按钮分离
|
||
- 🗑️ **关闭订单**:底部栏左侧新增"关闭订单"按钮,确认后标记取消并从服务器删除
|
||
- 👥 **用餐人数**:桌号下方新增人数选择器,支持1/2/3/4/5/6/8/10常量快速选择和自定义输入
|
||
- 🪑 **添加菜品按钮移至单号下方**:布局调整,添加菜品按钮紧跟订单头部
|
||
- 🔒 **软件权限页面**:新增权限管理页面,展示应用所需权限说明和沙盒运行说明
|
||
|
||
#### 修改文件
|
||
- `lib/src/pages/tools/cooking/order_assistant_page.dart` — 重构底部栏(仅保留关闭+账单),新增分享卡片、人数选择器、分享方法
|
||
- `lib/src/models/tools/order_model.dart` — peopleCount字段(此前已添加)
|
||
- `lib/src/controllers/tools/order_assistant_controller.dart` — setPeopleCount/clearAllData方法(此前已添加)
|
||
- `lib/src/pages/profile/permission_page.dart` — 新增权限页面
|
||
- `lib/src/pages/profile/about_page.dart` — 新增软件权限入口
|
||
|
||
|
||
## [0.97.31] - 2026-04-17
|
||
|
||
### 🔧 修复 — 二维码扫码显示网页而非JSON
|
||
|
||
#### 修复内容
|
||
- 🐛 **QR URL修正**:二维码/条形码URL从 `kitchen.php?act=get&id=xxx`(返回JSON)改为 `?id=xxx`(加载index.html网页)
|
||
- 扫码后现在正确显示点单网页,包含菜品列表、金额、备注、桌号等信息
|
||
- 网页端通过 `?id=xxx` 参数自动调用API获取订单数据并渲染
|
||
|
||
#### 修改文件
|
||
- `lib/src/models/tools/order_model.dart` — qrUrl 改为 `https://eat.wktyl.com/api/kitchen/?id=$id`
|
||
- `lib/src/services/tools/order_api_service.dart` — getQrUrls 同步修正
|
||
|
||
|
||
## [0.97.30] - 2026-04-17
|
||
|
||
### 🔧 修复 — API路径修正 + 接口测试脚本完善
|
||
|
||
#### 修复内容
|
||
- 🐛 **API路径修正**:`/kitchen.php` → `/kitchen/kitchen.php`,所有端统一指向正确服务器路径
|
||
- 🐛 **测试脚本runInShell修复**:移除 `runInShell: true`,避免shell将URL中 `&` 解释为后台运行符导致参数丢失
|
||
- 🐛 **SSE测试修复**:改用 `Process.run` + 临时文件方式读取SSE流,替代 `Process.start` + stdout.fold
|
||
- 🐛 **UTF-8编码修复**:curl添加 `--compressed` 参数,正确处理gzip压缩响应
|
||
|
||
#### 接口验证结果(全部通过)
|
||
| # | 测试项 | 结果 |
|
||
|---|--------|------|
|
||
| 1 | 接口首页 (index) | ✅ |
|
||
| 2 | CORS预检 (OPTIONS) | ✅ |
|
||
| 3 | 创建点单 (POST create) | ✅ |
|
||
| 4 | 获取点单 (GET get) | ✅ |
|
||
| 5 | 更新点单 (POST update) | ✅ |
|
||
| 6 | 点单列表 (GET list) | ✅ |
|
||
| 7 | 统计信息 (GET stats) | ✅ |
|
||
| 8 | SSE实时推送 | ✅ |
|
||
| 9 | 清理过期 (GET cleanup) | ✅ |
|
||
| 10 | 删除点单 (GET delete) | ✅ |
|
||
| 11 | 确认删除 (404) | ✅ |
|
||
|
||
#### 修改文件
|
||
- `lib/src/services/tools/order_api_service.dart` — _basePath 修正为 /kitchen/kitchen.php,QR/barcode URL同步修正
|
||
- `lib/src/models/tools/order_model.dart` — qrUrl 修正为 /kitchen/kitchen.php
|
||
- `web_order/index.html` — API_BASE 和 SSE_URL 修正为 /kitchen/ 子路径
|
||
- `scripts/test_kitchen_api.dart` — 修复 runInShell、SSE测试、UTF-8编码问题
|
||
|
||
|
||
## [0.97.29] - 2026-04-17
|
||
|
||
### ✨ 新增 — 点餐助手PHP后端 + SSE实时推送 + 数据清理
|
||
|
||
#### 功能描述
|
||
- 🖥️ **PHP后端API**:kitchen.php 完整CRUD接口,JSON文件存储,文件锁保证并发安全
|
||
- 📡 **SSE实时推送**:kitchen_sse.php Server-Sent Events端点,App更新后网页端实时刷新
|
||
- 🗑️ **数据清理**:App端支持7天/30天过期清理、本地+服务器联合清理、清空全部历史
|
||
- ☁️ **远程同步**:OrderApiService 对接真实API,创建/更新/删除操作同步到服务器
|
||
- 🌐 **网页端SSE**:web_order/index.html 接入SSE,实时显示连接状态,自动重连+轮询降级
|
||
|
||
#### API接口
|
||
| 操作 | 方法 | URL |
|
||
|------|------|-----|
|
||
| 创建点单 | POST | kitchen.php?act=create |
|
||
| 获取点单 | GET | kitchen.php?act=get&id=xxx |
|
||
| 更新点单 | POST | kitchen.php?act=update |
|
||
| 点单列表 | GET | kitchen.php?act=list&page=1&limit=20 |
|
||
| 删除点单 | GET | kitchen.php?act=delete&id=xxx |
|
||
| 清理过期 | GET | kitchen.php?act=cleanup&days=30 |
|
||
| 统计信息 | GET | kitchen.php?act=stats |
|
||
| SSE推送 | GET | kitchen_sse.php?order_id=xxx |
|
||
|
||
#### 新增文件
|
||
- `docs/api/kitchen.php` — 点餐助手PHP后端API(CRUD + JSON存储 + 过期清理)
|
||
- `docs/api/kitchen_sse.php` — SSE实时推送端点(监听订单变化,推送更新)
|
||
|
||
#### 修改文件
|
||
- `lib/src/services/tools/order_api_service.dart` — Mock→真实API,新增 deleteOrder/cleanupExpired/getStats
|
||
- `lib/src/controllers/tools/order_assistant_controller.dart` — 新增 cleanupExpiredLocal/cleanupExpiredRemote/cleanupAllExpired
|
||
- `lib/src/pages/tools/cooking/order_assistant_page.dart` — 新增🗑️数据清理按钮和清理弹窗
|
||
- `lib/src/models/tools/order_model.dart` — qrUrl 更新为 kitchen.php?act=get&id=xxx
|
||
- `web_order/index.html` — 接入SSE实时推送,新增连接状态指示器,轮询降级
|
||
|
||
|
||
## [0.97.28] - 2026-04-17
|
||
|
||
### ✨ 新增 — 点餐助手工具
|
||
|
||
#### 功能描述
|
||
- 🍽️ **用户点餐**:支持从浏览记录、搜索、手动填写、商家推荐四种方式添加菜品
|
||
- 🏪 **商家推单**:一键切换商家推单模式,支持商家推荐菜品
|
||
- 📋 **账单生成**:自动计算菜品数量和金额,生成唯一单号和时间戳
|
||
- 📱 **二维码/条形码**:生成点单二维码和条形码,URL指向 eat.wktyl.com/api/kitchen
|
||
- 💾 **本地持久化**:SharedPreferences 存储历史记录和记录条数统计
|
||
- 🌐 **网页端**:web_order/index.html 支持扫码查看点单信息,自动15秒刷新
|
||
- 🎨 **iOS风格UI**:毛玻璃效果、圆角卡片、动态主题适配
|
||
|
||
#### 新增文件
|
||
- `lib/src/models/tools/order_model.dart` — 点单数据模型(Order、OrderItem、OrderType、OrderStatus、OrderItemSource)
|
||
- `lib/src/services/tools/order_api_service.dart` — 点单API服务(Mock实现,后端就绪后切换)
|
||
- `lib/src/controllers/tools/order_assistant_controller.dart` — 点餐助手控制器,管理状态和持久化
|
||
- `lib/src/pages/tools/cooking/order_assistant_page.dart` — 点餐助手主页面
|
||
- `lib/src/pages/tools/cooking/widgets/order_item_card.dart` — 菜品卡片组件
|
||
- `lib/src/pages/tools/cooking/widgets/add_item_sheet.dart` — 添加菜品弹窗入口
|
||
- `lib/src/pages/tools/cooking/widgets/browse_history_picker.dart` — 浏览记录选择器
|
||
- `lib/src/pages/tools/cooking/widgets/manual_input_sheet.dart` — 手动填写菜品弹窗
|
||
- `lib/src/pages/tools/cooking/widgets/qr_barcode_dialog.dart` — 二维码/条形码弹窗
|
||
- `web_order/index.html` — 网页端点单展示页
|
||
|
||
#### 修改文件
|
||
- `lib/src/models/tool_item_model.dart` — 新增 order_assistant 工具注册
|
||
- `lib/src/config/app_routes.dart` — 新增 toolsOrderAssistant 路由
|
||
|
||
|
||
## [0.97.27] - 2026-04-17
|
||
|
||
### ✨ 新增 — 瀑布流工具卡片插槽系统
|
||
|
||
#### 功能描述
|
||
- 🧩 **统一插槽系统**:WaterfallSlotRegistry 统一管理瀑布流中插入的各类卡片(miniCard、toolCard)
|
||
- 🔀 **交替插入策略**:miniCard 和 toolCard 每20个卡片交替插入(位20插miniCard,位40插toolCard)
|
||
- 🃏 **工具卡片**:毛玻璃中等卡片样式,展示工具 icon、名称、描述、分类标签
|
||
- ℹ️ **详情入口**:卡片右上角 info 图标,点击进入独立工具详情页
|
||
- 🚀 **一键打开**:卡片整体点击直接跳转对应工具页面
|
||
- 📋 **强制声明**:ToolItem 新增 waterfallSlot 必填字段,不声明编译报错
|
||
- 🔮 **未来扩展**:新增工具只需在 defaultTools 中声明 waterfallSlot: WaterfallSlotConfig(show: true) 即可自动出现在首页瀑布流
|
||
|
||
#### 新增文件
|
||
- `lib/src/models/waterfall_slot.dart` — 瀑布流插槽模型(WaterfallSlotType、WaterfallSlot、WaterfallSlotConfig、WaterfallSlotRegistry)
|
||
- `lib/src/widgets/discover/tool_card_discover_card.dart` — 瀑布流工具卡片组件(毛玻璃风格)
|
||
- `lib/src/pages/tools/tool_detail_page.dart` — 工具详情页(独立页面,展示工具信息和打开按钮)
|
||
|
||
#### 修改文件
|
||
- `lib/src/models/tool_item_model.dart` — ToolItem 新增 waterfallSlot 必填字段;ToolRegistry 新增 homeCardTools getter;所有 defaultTools 均声明 waterfallSlot
|
||
- `lib/src/models/discover_model.dart` — DiscoverItemType 新增 toolCard 枚举值;DiscoverItem 新增 toolItemRef 字段和 toolCard 工厂构造;新增 ToolItemRef 类
|
||
- `lib/src/widgets/discover/discover_waterfall.dart` — 接入 WaterfallSlotRegistry 统一插槽系统;新增 toolCards 参数;_buildItem 新增 toolCard 分支
|
||
- `lib/src/pages/home/home_page.dart` — 传递 toolCards: ToolRegistry.homeCardTools 参数
|
||
- `lib/src/config/app_routes.dart` — 新增 toolDetail 路由常量和 GetPage 注册
|
||
|
||
|
||
## [0.97.26] - 2026-04-16
|
||
|
||
### ✨ 新增 — 用料管理工具
|
||
|
||
#### 功能描述
|
||
- 🧴 **瓶子管理**:网格布局展示厨房用料瓶子,类似小瓶子视觉效果
|
||
- 📊 **分类筛选**:支持比例、调味料、食材三种类型筛选
|
||
- ➕ **增减容量**:点击瓶子可快速增加或减少容量(每次10%)
|
||
- ✏️ **自定义瓶子**:支持自定义瓶子名称、容量、类型
|
||
- 💾 **本地持久化**:数据通过 SharedPreferences 本地存储
|
||
- 🎬 **入场动画**:网格交错入场动画,流畅的视觉体验
|
||
- 🎨 **iOS风格UI**:毛玻璃效果、圆角卡片、渐变色设计
|
||
|
||
#### 新增文件
|
||
- `lib/src/models/bottle_model.dart` — 用料瓶子数据模型,包含类型、容量、填充量等
|
||
- `lib/src/controllers/ingredient_manage_controller.dart` — 用料管理控制器,管理瓶子增删改查
|
||
- `lib/src/pages/tools/ingredient_manage_page.dart` — 用料管理主页面,网格布局展示瓶子
|
||
|
||
#### 修改文件
|
||
- `lib/src/models/tool_item_model.dart` — 注册「用料管理」工具项(id: ingredient_manage, route: /tools/ingredient-manage)
|
||
- `lib/src/config/app_routes.dart` — 注册路由 /tools/ingredient-manage
|
||
|
||
|
||
## [0.97.25] - 2026-04-16
|
||
|
||
### ✨ 新增 — 菜品排名(Tier List)工具
|
||
|
||
#### 功能描述
|
||
- 🏆 **五级排行体系**:夯(红) → 顶级(橙金) → 人上人(黄) → NPC(米白) → 拉完了(灰白)
|
||
- 📖 **浏览记录导入**:从浏览历史中选择菜品加入排名
|
||
- ❤️ **收藏导入**:从收藏列表中选择菜品加入排名
|
||
- ✏️ **手动输入**:自定义菜品名称 + 选择 emoji 图标
|
||
- 🔍 **搜索过滤**:选择面板内支持实时搜索
|
||
- 🔄 **跨层级移动**:点击菜品可移动到其他层级
|
||
- 🗑️ **删除/清空**:支持单条删除和一键清空
|
||
- 💾 **本地持久化**:数据通过 SharedPreferences 本地存储
|
||
- 🎬 **交错入场动画**:每行依次 slide + fade 进入
|
||
|
||
#### 新增文件
|
||
- `lib/src/models/dish_rank_model.dart` — 菜品排名数据模型 + 层级定义常量
|
||
- `lib/src/pages/tools/ranking/dish_ranking_controller.dart` — 排名控制器(数据管理、持久化)
|
||
- `lib/src/pages/tools/ranking/dish_ranking_page.dart` — Tier List 主页面
|
||
- `lib/src/pages/tools/ranking/dish_pick_sheet.dart` — 底部选择面板组件
|
||
|
||
#### 修改文件
|
||
- `lib/src/models/tool_item_model.dart` — 注册「菜品排名」工具项(id: dish_ranking, route: /tools/dish-ranking)
|
||
- `lib/src/config/app_routes.dart` — 注册路由 /tools/dish-ranking
|
||
|
||
|
||
## [0.97.24] - 2026-04-16
|
||
|
||
### ♻️ 重构 — 发现页列表下拉手势完全劫持
|
||
|
||
#### 问题
|
||
- 子列表(热门排行 ListView、标签列表、分类网格)拥有独立滚动控制器
|
||
- 在子列表顶部下拉时,手势被子列表消费,外层无法劫持为打开工具中心
|
||
|
||
#### 变更
|
||
- 🔽 **禁用子列表独立滚动**:热门排行改为 `Column` + `map`,标签列表改为 `Column` + `map`,分类网格改为 `GridView` + `shrinkWrap` + `NeverScrollableScrollPhysics`
|
||
- 🎯 **统一滚动管理**:所有内容由外层 `CustomScrollView` 统一滚动,下拉手势不再被子列表拦截
|
||
- 🧹 **移除 GestureDetector 冲突**:移除外层 `GestureDetector`(会和列表滚动竞争),改用纯 `NotificationListener<ScrollNotification>` + `ClampingScrollPhysics` 捕获 `OverscrollNotification`
|
||
- 🔧 **修复 PageRoute 构造异常**:自定义 `_SlideFromTopPageRoute` 改为 `PageRouteBuilder`,修复 `NoSuchMethodError: No constructor '' declared in class 'null'`
|
||
|
||
#### 修改文件
|
||
- `lib/src/pages/discover/discover_page.dart` — 移除 GestureDetector,修复 PageRoute,使用 ClampingScrollPhysics
|
||
- `lib/src/pages/discover/components/discover_sections_widget.dart` — 所有子列表改为无独立滚动布局
|
||
|
||
|
||
## [0.97.23] - 2026-04-16
|
||
|
||
### ♻️ 重构 — 发现页下拉手势拦截 & 工具中心页面化
|
||
|
||
#### 变更
|
||
- 🔽 **全局下拉拦截**:发现页拦截所有下拉手势,任意位置下拉均可唤出工具中心
|
||
- 📄 **页面化导航**:工具中心从 Overlay 弹窗改为 `PageRoute` 页面导航,天然支持系统返回键
|
||
- 🎬 **从顶部滑入**:自定义 `_SlideFromTopPageRoute`,工具中心从顶部滑入(类 iOS 通知中心/搜索面板)
|
||
- ⏸️ **动画可打断**:页面转场动画支持手势打断(系统默认支持)
|
||
- 👆 **下拉关闭**:工具中心页面内下拉手势可关闭返回,带拖拽指示条
|
||
- 📳 **震动反馈**:下拉达到阈值触发中等+强烈震动
|
||
- 📱 **系统返回键**:工具中心页面支持 Android 系统返回键、iOS 滑动返回
|
||
- 🎨 **保留原有 UI**:工具中心面板 UI 不变(常用工具、分类工具、浏览记录、底部操作栏)
|
||
|
||
#### 移除
|
||
- ❌ `OverlayEntry` 方案(不支持系统返回键)
|
||
- ❌ `AnimationController` 面板动画(改用系统 PageRoute 动画)
|
||
|
||
#### 修改文件
|
||
- `lib/src/pages/discover/discover_page.dart` — 移除 Overlay 方案,改为 `GestureDetector` + `PageRoute` 导航
|
||
- `lib/src/pages/discover/components/tools_panel_widget.dart` — 重构为独立页面模式,支持下拉关闭手势和系统返回键
|
||
|
||
|
||
## [0.97.22] - 2026-04-16
|
||
|
||
### 🐛 修复 — 发现页工具中心交互优化
|
||
|
||
#### 变更
|
||
- 🔽 **从底部滑入**:工具中心改为从底部滑入(类微信小程序交互),取代原顶部滑入
|
||
- 📐 **覆盖底部tab栏**:使用 Overlay 确保工具面板层级最高,覆盖底部导航栏
|
||
- 🔘 **固定按钮可见**:底部功能按钮(首页/收藏/设置/关于)随面板一起显示
|
||
- 📳 **震动反馈**:下拉触发工具中心时添加触觉反馈(中等+强烈震动)
|
||
- 🔍 **响应式搜索**:搜索框从只读改为可输入,实时搜索匹配工具并显示结果
|
||
- ⚡ **触发灵敏度**:下拉阈值从80px降至50px,阻尼系数从0.5提升至0.8
|
||
- 👆 **下滑关闭**:面板内下滑手势关闭面板,提示文案更新为"下滑关闭"
|
||
|
||
#### 修改文件
|
||
- `lib/src/pages/discover/discover_page.dart` — 搜索框响应式搜索、Overlay显示面板、震动反馈、灵敏度调整
|
||
- `lib/src/pages/discover/components/tools_panel_widget.dart` — 从底部滑入动画、下滑关闭手势、遮罩层分离
|
||
|
||
|
||
## [0.97.21] - 2026-04-16
|
||
|
||
### ♻️ 重构 — 发现页代码拆分与工具中心完善
|
||
|
||
#### 变更
|
||
- 📁 **代码拆分**:将 discover_page.dart (原1834行) 拆分为多个文件,每个文件不超过800行
|
||
- 📦 **新建文件夹**:`lib/src/pages/discover/components/` 存放拆分后的组件
|
||
- 🔧 **工具面板组件**:`tools_panel_widget.dart` (792行) — 包含下拉工具中心面板所有UI
|
||
- 📊 **分区内容组件**:`discover_sections_widget.dart` (685行) — 包含热门/今天吃什么/推荐三个分区
|
||
- 📄 **主文件精简**:`discover_page.dart` (499行) — 保留页面骨架和状态管理
|
||
- 💾 **备份文件**:`discover_page.dart.bak` 保留原始代码
|
||
|
||
#### 工具中心完善
|
||
- ✅ **上滑关闭**:支持手势上滑关闭工具中心面板
|
||
- 🔍 **搜索框**:基础信息区新增工具搜索功能
|
||
- 📝 **工具详情**:长按工具显示详情弹窗,包含使用次数、联网状态等信息
|
||
- 📂 **分类展示**:所有工具按分类分组显示(烹饪助手/健康营养/数据查询/规划管理)
|
||
- 🕐 **浏览记录**:显示最近浏览的菜谱,横向滚动卡片列表
|
||
- 🔘 **底部按钮**:固定功能按钮栏(首页/收藏/设置/关于)
|
||
- 📏 **层级修复**:工具中心面板覆盖在底部tab栏之上
|
||
|
||
#### 修改文件
|
||
- `lib/src/pages/discover/discover_page.dart` — 主文件精简,引用新组件
|
||
- `lib/src/pages/discover/components/tools_panel_widget.dart` — 工具面板组件
|
||
- `lib/src/pages/discover/components/discover_sections_widget.dart` — 分区内容组件
|
||
- `lib/src/pages/discover/components/tool_detail_sheet.dart` — 工具详情弹窗
|
||
- `lib/src/pages/discover/components/browse_history_section.dart` — 浏览记录组件
|
||
- `lib/src/pages/discover/discover_page.dart.bak` — 备份
|
||
|
||
|
||
## [0.97.20] - 2026-04-16
|
||
|
||
### ♻️ 重构 — 发现页新增动态工具栏
|
||
|
||
#### 变更
|
||
- 🔄 **发现页面**:新增动态工具栏,显示常用工具快捷入口(按使用次数排序)
|
||
- 📊 **智能排序**:工具按 `usageCount` 降序排列,常用工具优先显示
|
||
- 🔧 **工具功能**:点击工具记录使用次数并跳转;"更多"按钮打开完整工具中心面板
|
||
- 💎 **视觉风格**:毛玻璃卡片效果,与 iOS 26 Liquid Glass 风格一致
|
||
- 📍 **位置调整**:工具栏位于搜索框与分段控制之间
|
||
|
||
#### 修改文件
|
||
- `lib/src/pages/discover/discover_page.dart` — 新增 _buildToolsBar、_buildToolShortcut、_buildMoreToolsCard、_navigateToTool 方法
|
||
|
||
|
||
> 📌 已移除较早版本记录(0.97.19及之前),功能已归档至软件特性清单。
|