10 KiB
10 KiB
Changelog
All notable changes to this project will be documented in this file.
[0.99.29] - 2026-04-22
✨ 增强 — 扫码识别菜谱 + 相机权限管理完善
变更描述
扫码功能增强:识别CP/ID后通过API转换为APP内部菜品ID跳转详情页;相机权限管理完善
实现内容
- 🔍 扫码结果智能识别:截取URL中的CP编码和ID参数,通过
WhatToEatRepositoryAPI查询转换为APP内部菜品ID- 支持
https://eat.wktyl.com/api/kitchen/recipe_share.php?code=CP037130格式 - 支持
https://eat.wktyl.com/?id=28087格式 - 支持纯文本
CP037130格式 - 查询成功显示菜谱识别对话框,跳转菜品详情页
- 查询失败降级为普通扫码结果显示
- 支持
- 📷 相机权限弹窗引导:扫码前弹出相机用途说明,拒绝后显示各平台开启指引
- 🔒 权限管理页面增强:
- 新增相机权限项(📷),状态动态显示(已开启/已拒绝)
- 相机权限拒绝时显示红色标识,点击可跳转系统设置
- 权限说明弹窗更新:区分动态权限和基础权限
- 📄 隐私政策更新:设备权限调用新增相机权限说明
修改文件
lib/src/pages/home/scanner_page.dart— CP/ID通过API转换,权限弹窗引导lib/src/pages/profile/tools/permission_page.dart— 新增相机权限,动态状态显示lib/src/pages/profile/info/privacy_policy_page.dart— 新增相机权限说明
[0.99.28] - 2026-04-22
🔄 升级 — mobile_scanner 本地包升级至官方 v7.2.0 + 鸿蒙适配合并
变更描述
将本地 packages/mobile_scanner 从鸿蒙适配版 v7.1.4 升级为官方 v7.2.0,并保留鸿蒙端支持
合并内容
- 📦 基础:官方
mobile_scannerv7.2.0(新增 camera_lens_type、switch_camera_option、barcode_bytes 等) - 🔧 鸿蒙适配合并:
ohos/目录完整保留(鸿蒙原生 ets 实现)lib/src/method_channel/ohos_surface_producer_delegate.dart— 鸿蒙 Surface 代理lib/src/method_channel/surface_producer_delegate.dart— Surface 代理接口lib/src/method_channel/mobile_scanner_method_channel.dart— 添加TargetPlatform.ohos支持lib/src/method_channel/rotated_preview.dart— 鸿蒙旋转方向修复pubspec.yaml— 添加ohos平台声明
修改文件
packages/mobile_scanner/— 整体替换为官方 v7.2.0 + 鸿蒙适配合并版packages/本地已适配鸿蒙的库.md— 添加 mobile_scanner 适配记录
[0.99.27] - 2026-04-22
✨ 新功能 — 首页扫码功能(mobile_scanner)
功能描述
首页 AppBar 右侧新增扫码按钮,点击打开相机扫描二维码/条形码页面
实现内容
- 🔍 集成
mobile_scanner鸿蒙适配版(本地包packages/mobile_scanner) - 📱 支持平台:Android / iOS / macOS / 鸿蒙 / Web
- 🖥️ Windows/Linux 降级提示:显示"当前平台暂不支持相机扫码"
- 🎯 扫码结果自动识别类型(链接/EAN-13/EAN-8/UPC-A/文本)
- 📋 支持复制扫码结果到剪贴板
- 🔦 支持闪光灯开关、前后摄像头切换
- 📐 扫描框四角装饰 + 提示文字
权限配置
- Android:
AndroidManifest.xml添加CAMERA权限 - iOS:
Info.plist添加NSCameraUsageDescription - macOS:
Info.plist添加NSCameraUsageDescription - 鸿蒙:
module.json5添加ohos.permission.CAMERA,string.json权限说明改中文
修改文件
pubspec.yaml—fluttertpc_mobile_scannergit依赖改为mobile_scanner本地包lib/src/pages/home/scanner_page.dart— 新建扫码页面lib/src/widgets/glass/nav/home_app_bar.dart— AppBar 添加扫码按钮lib/src/pages/home/home_page.dart— 连接扫码按钮回调lib/src/config/app_routes.dart— 注册/scanner路由android/app/src/main/AndroidManifest.xml— 添加 CAMERA 权限ios/Runner/Info.plist— 添加 NSCameraUsageDescriptionmacos/Runner/Info.plist— 添加 NSCameraUsageDescriptionohos/entry/src/main/module.json5— 添加 CAMERA 权限ohos/entry/src/main/resources/base/element/string.json— 权限说明改中文
[0.99.26] - 2026-04-22
🐛 修复 — Windows端返回导航快捷键改用Escape键
问题描述
Windows桌面端在搜索页面等输入框中按 Backspace/Delete 删除文字时,会误触发全局返回导航逻辑,导致返回上一页
根因分析
main.dart中KeyboardListener全局监听 Backspace 键执行Get.back()返回上一页- Backspace 是文本编辑常用键,与返回导航功能冲突,无法通过焦点检测完全避免
修复内容
- 🔧 将 Backspace 键绑定改为 Escape 键
- Escape 是桌面端常用的"返回/关闭"快捷键,不会与文本编辑冲突
- 返回导航快捷键变更为:Alt+← / Escape / BrowserBack(鼠标侧键)
修改文件
lib/main.dart—KeyboardListener.onKeyEvent将LogicalKeyboardKey.backspace改为LogicalKeyboardKey.escape
🐛 修复 — 工具中心多个页面列表溢出及路由未注册
问题描述
- 用餐时段推荐、份量缩放、食材详情、每周菜单规划等页面内容被 AppBar 遮住
- RenderFlex 溢出 3.0 pixels(meal_time_recommend_page.dart:253)
- 路由
/tools/dish-ranking未注册到 PageRegistry,导致页面验证警告
根因分析
- 内容被 AppBar 遮住:3个页面使用了
SafeArea(top: false),而CupertinoPageScaffold的半透明导航栏(alpha: 0.9)不会自动偏移内容,需要 SafeArea 提供顶部间距 - RenderFlex 溢出:时段选择器
SizedBox(height: 50)容器高度不足,内部 Column 内容超出 3px - 路由未注册:
dish-ranking等路由在 GetPage 中已定义但 PageRegistry.registerAll 中缺少对应 PageInfo
修复内容
- 🔧 移除
SafeArea(top: false):meal_time_recommend_page、serving_scaler_page、ingredient_detail_page - 🔧 修复时段选择器高度:SizedBox 50→56,消除 RenderFlex 溢出
- 🔧 每周菜单规划页面
_buildDayDetailView:Column 改为 SingleChildScrollView,防止内容溢出 - 🔧 补充 PageRegistry 注册:dish-ranking、toolsStats、toolsOrderAssistant、toolsDecisionMaker、toolsTakeoutNote、dataExport、ratingRecords、foodTimeline 共8个路由
修改文件
lib/src/pages/tools/health/meal_time_recommend_page.dart— 移除top: false,修复 SizedBox 高度lib/src/pages/tools/cooking/calculator/serving_scaler_page.dart— 移除top: falselib/src/pages/tools/ingredient_detail/ingredient_detail_page.dart— 移除top: falselib/src/pages/tools/planning/weekly_menu_planner_page.dart—_buildDayDetailView改用 SingleChildScrollViewlib/src/config/app_routes.dart— 补充8个缺失的 PageInfo 注册项
举一反三
- 全局搜索确认已无其他
SafeArea(top: false)残留 - 排查所有工具页面路由,确保 GetPage 与 PageRegistry 一一对应
[0.99.25] - 2026-04-22
🔄 调整 — 个人中心首页与设置页按钮位置互换
变更内容
- 🌟 美食年轮入口移至首页:将「🌟 美食年轮 - 查看你的美食旅程」从设置页移至个人中心首页顶部卡片位置,方便用户快速访问美食旅程
- 🚀 开发计划入口移至设置页:将「开发计划 - 查看即将推出的功能与路线图」从首页移至设置页底部 section,含完整路线图 Sheet 弹窗
修改文件
lib/src/pages/profile/profile_home.dart— 移除开发计划卡片及 Sheet 相关代码,新增美食年轮入口卡片lib/src/pages/profile/profile_settings.dart— 移除美食年轮 section,新增开发计划 section(含_showDevPlanSheet、_buildDevPlanItem、_DevPlanItem、_PlanStatus)
🔤 字体 — NotoSansSC 子集化并启用全局中文字体
变更内容
- 🔧 修复假字体文件:原
NotoSansSC-Regular.otf和NotoSansSC-Bold.otf实际是 GitHub HTML 页面(302KB),替换为真正的 OTF 字体文件 - ✂️ 字体子集化:使用
fontTools pyftsubset对完整版 NotoSansCJKsc 进行 GB2312 子集化(6763 常用汉字 + 常用符号),体积从 31.9MB → 6.5MB(缩减 80%) - 🎨 启用全局中文字体:在
theme_service.dart的 Material 和 Cupertino 主题中启用NotoSansSC作为全局字体,确保中文渲染统一美观
体积对比
| 文件 | 子集化前 | 子集化后 | 缩减 |
|---|---|---|---|
| NotoSansSC-Regular.otf | 15.7 MB | 3.2 MB | 80% |
| NotoSansSC-Bold.otf | 16.2 MB | 3.3 MB | 80% |
| 合计 | 31.9 MB | 6.5 MB | 80% |
修改文件
assets/fonts/NotoSansSC-Regular.otf— 替换为 GB2312 子集化版本assets/fonts/NotoSansSC-Bold-new.otf— 新增 GB2312 子集化 Bold 版本(原 Bold.otf 被 IDE 锁定,使用新文件名)pubspec.yaml— 更新字体配置注释和 Bold 文件路径lib/src/services/ui/theme_service.dart— 在getThemeData()和cupertinoThemeData中启用fontFamily: 'NotoSansSC'
⚙️ 设置 — 字体风格可切换(系统默认 / NotoSansSC)
变更内容
- 🔤 新增字体风格设置:用户可在「个性化设置 → 🔤 字体风格」中选择「系统默认」或「NotoSansSC」
- 💾 持久化存储:字体选择保存到 SharedPreferences,重启后保持
- 🔄 动态切换:选择后立即生效,无需重启应用
- 🎨 CupertinoSegmentedControl:使用 iOS 风格分段控件,附带说明文字
修改文件
lib/src/services/ui/theme_service.dart— 新增FontFamilyStyle枚举、fontFamilyStyle状态、setFontFamilyStyle()方法,主题根据选择动态切换字体lib/src/controllers/user/personalization_controller.dart— 新增setFontFamilyStyle()方法lib/src/pages/profile/settings/personalization_page.dart— 新增「🔤 字体风格」section,含分段控件和说明