Files
kitchen/CHANGELOG.md
Developer e347b3ca73 release
2026-04-18 05:20:42 +08:00

23 KiB
Raw Blame History

Changelog

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

[0.98.2] - 2026-04-18

🐛 修复 — 小妈菜园性能优化 + GetX报错修复

变更

  • ⏱️ 生长计时器间隔优化从10秒调整为30秒减少不必要的性能开销配置项移入 FarmConfig
  • 🔄 应用生命周期管理:添加 WidgetsBindingObserver,应用进入后台时暂停定时器,恢复前台时立即更新生长状态并重启定时器
  • 🐛 修复GetX improper use报错:重构 _buildGardenGridObxLayoutBuilder 的嵌套顺序,确保可观察变量在 Obx 直接作用域内被访问
  • 🌾 空数据状态处理:菜园数据为空时显示加载提示,避免 Obx 无响应式变量注册

修改文件

  • lib/src/controllers/farm/farm_game_controller.dart — 计时器间隔配置化、添加生命周期管理
  • lib/src/pages/tools/farm/farm_game_page.dart — 修复 Obx 嵌套顺序、添加空数据状态
  • lib/src/config/farm_config.dart — 新增 growthCheckIntervalSeconds 配置项

[0.98.1] - 2026-04-18

🐛 修复 — 收藏页面排序功能恢复 + 编辑模式侧栏悬浮

变更

  • 🔀 恢复排序功能:将排序按钮集成到类型标签栏右侧,显示当前排序方式标签(最新/最早/A-Z/Z-A
  • 🎯 排序弹窗优化:当前选中排序方式显示 ✓ 标识,每个选项增加 Emoji 图标
  • 📌 编辑模式改为侧栏悬浮:底部操作栏改为右侧悬浮按钮组(取消/删除/全选),不再被底部 tab 栏遮挡
  • 🧹 清理冗余代码:移除未使用的 _buildToolbar_buildToolbarButton 方法

修改文件

  • lib/src/pages/profile/social/favorites_page.dart — 恢复排序入口、编辑模式改为悬浮侧栏

[0.98.0] - 2026-04-18

🌾 新增 — 小妈菜园游戏系统

核心游戏功能

  • 🌱 种植系统12 块土地,支持播种、浇水、收获、清理枯萎作物
  • 实时生长计时4 阶段生长过程种子→幼苗→生长中→成熟10秒自动刷新
  • 💧 浇水机制浇水提升生长速度2小时未浇水作物枯萎
  • 🎉 收获奖励:获得金币和经验值,果实自动存入背包
  • 🔓 土地扩建:消耗 200 金币解锁新土地

玩家系统

  • 等级经验系统:升级奖励金币+钻石,自动解锁新作物
  • 🎒 背包系统:种子/果实分类管理,购买/收获自动更新
  • 🏪 种子商店12种作物不同生长时间和价格按等级解锁
  • 🏆 成就系统6个初始成就初次收获、丰收达人、等级达成等

作物配置

  • 🥕 12种作物:萝卜、土豆、卷心菜、西红柿、玉米、辣椒、茄子、草莓、南瓜、西瓜、葡萄
  • 📊 生长阶段:每个作物 4 个生长阶段,不同 Emoji 显示
  • 💰 经济系统:金币购买种子,收获获得更高回报
  • 🔒 等级解锁:从 Lv.1 到 Lv.10 逐步解锁所有作物

技术实现

  • 💾 Hive 本地存储3个 Box玩家/土地/背包),手动编写适配器
  • 🎨 iOS 26 Liquid Glass 风格Cupertino 组件 + DesignTokens 统一主题
  • 🌗 深色/浅色模式:完美适配双主题
  • 🐛 调试功能:加金币、加速作物、解锁全部、重置数据
  • 📱 响应式布局3-4列自适应网格支持平板和桌面

修改文件

  • lib/src/models/farm/farm_player.dart + .g.dart — 玩家数据模型
  • lib/src/models/farm/farm_land.dart + .g.dart — 土地数据模型
  • lib/src/models/farm/inventory_item.dart + .g.dart — 背包物品模型
  • lib/src/models/farm/crop_config.dart — 作物配置
  • lib/src/models/farm/achievement_config.dart — 成就配置
  • lib/src/models/farm/crop_registry.dart — 12种作物注册表
  • lib/src/models/farm/achievement_registry.dart — 6个成就注册表
  • lib/src/config/farm_config.dart — 游戏全局配置
  • lib/src/controllers/farm/farm_game_controller.dart — 核心游戏控制器
  • lib/src/controllers/farm/farm_shop_controller.dart — 商店控制器
  • lib/src/controllers/farm/farm_inventory_controller.dart — 背包控制器
  • lib/src/controllers/farm/farm_achievement_controller.dart — 成就控制器
  • lib/src/pages/tools/farm/farm_game_page.dart — 主游戏页面
  • lib/src/pages/tools/farm/farm_shop_page.dart — 种子商店页面
  • lib/src/pages/tools/farm/farm_inventory_page.dart — 背包页面
  • lib/src/pages/tools/farm/farm_achievement_page.dart — 成就中心页面
  • lib/src/services/data/hive_service.dart — 扩展农场数据 Box
  • lib/src/config/app_routes.dart — 新增 4 个农场路由
  • lib/src/models/tool_item_model.dart — 注册工具中心入口
  • lib/src/app_binding.dart — 注册游戏控制器

[0.97.38] - 2026-04-18

🐛 修复 — 7个UI/功能Bug

Bug修复

  • 🐛 收藏页面:移除"全部菜品"下方多余的"全部菜谱"栏
  • 🐛 收藏页面:修复编辑按钮报错 Incorrect use of ParentDataWidgetPositioned放在Column中
  • 🐛 收藏页面修复编辑模式底部操作栏被底部Tab遮住的问题
  • 🐛 缓存管理:修复点击已缓存菜谱跳转显示加载失败(路由参数格式错误)
  • 🐛 数据导出修复弹出系统分享后未操作就显示导出成功Toast时机修正
  • 🐛 笔记页面:添加右上角缺失的添加笔记按钮
  • 🐛 缓存管理:优化已缓存菜品和食材列表,改为可折叠展示

新增 — 数据导入功能

数据导入

  • 📥 DataExportService 导入服务:支持 JSON 格式导入,与导出格式一致
    • previewImport() 方法:预览导入数据,显示各数据源条数
    • importFromJson() 方法:执行导入,支持选择数据源
    • ImportPreview 类:导入预览数据模型
  • 📥 DataExportPage 导入UI:新增"数据导入"区域
    • 选择 JSON 文件导入入口
    • 从其他应用分享导入入口
    • 导入预览(显示文件名、各数据源条数)
    • 确认导入对话框
  • 🔌 receive_sharing_intent 集成:支持从其他应用分享 JSON 文件到本应用
    • 监听分享流getMediaStream和初始分享getInitialMedia
    • 自动识别 JSON 文件并预览
  • 🔌 各 Controller importFromJson 方法
    • FavoritesController: addFavoriteFromJson
    • ShoppingListController: importFromJson
    • MealRecordController: importFromJson
    • CookingNoteController: importFromJson
    • WeeklyMenuController: importFromJson
    • BrowseHistoryController: importFromJson

平台配置

  • 🤖 AndroidAndroidManifest.xml 添加 SEND/SEND_MULTIPLE/VIEW intent-filterapplication/json
  • 🍎 iOSInfo.plist 添加 CFBundleDocumentTypes + UTImportedTypeDeclarationspublic.json
  • 📱 鸿蒙module.json5 添加 ohos.want.action.sendData skill + general.entity/general.object utd + READ_MEDIA 权限

修改文件

  • lib/src/pages/profile/social/favorites_page.dart — 修复布局Bug
  • lib/src/pages/profile/data/cache_manage_page.dart — 可折叠列表优化
  • lib/src/pages/profile/data_export_page.dart — 新增导入UI + receive_sharing_intent集成
  • lib/src/pages/tools/cooking/cooking_note_page.dart — 添加笔记按钮
  • lib/src/config/app_routes.dart — 修复路由参数
  • lib/src/services/data/data_export_service.dart — 新增导入功能
  • lib/src/controllers/data/favorites_controller.dart — 新增 addFavoriteFromJson
  • lib/src/controllers/data/shopping_list_controller.dart — 新增 importFromJson
  • lib/src/controllers/data/meal_record_controller.dart — 新增 importFromJson
  • lib/src/controllers/data/cooking_note_controller.dart — 新增 importFromJson
  • lib/src/controllers/data/weekly_menu_controller.dart — 新增 importFromJson
  • lib/src/controllers/data/browse_history_controller.dart — 新增 importFromJson
  • lib/src/models/data/weekly_menu_model.dart — DayMenu 添加 copyWith
  • android/app/src/main/AndroidManifest.xml — 添加分享intent-filter
  • ios/Runner/Info.plist — 添加JSON文件类型声明
  • ohos/entry/src/main/module.json5 — 添加分享skill和权限
  • ohos/entry/src/main/resources/base/element/string.json — 添加权限说明
  • ohos/entry/src/main/resources/zh_CN/element/string.json — 添加中文权限说明
  • ohos/entry/src/main/resources/en_US/element/string.json — 添加英文权限说明

[0.97.37] - 2026-04-18

新增 — 离线模式增强 + 数据导出功能

离线模式增强

  • 📡 OfflineService 离线服务核心:统一管理离线状态、操作守卫、功能可用性列表
    • guard() 方法:离线时拦截操作,支持排队等待网络恢复后自动执行
    • 可用/不可用功能列表:离线时明确告知用户哪些功能可用
    • 离线持续时间追踪:显示已离线时长
    • 排队操作计数:显示待执行操作数量
  • 🔔 增强离线指示器 OfflineIndicator:显示离线状态+持续时间+排队数,点击查看详情
  • 🔄 ConnectivityService 生命周期感知:监听 App 生命周期,resumed 时重新检查网络状态
  • 🛡️ DNS 预检重置机制:后台恢复时自动重置 DNS 预检状态,避免假离线

数据导出功能

  • 📦 DataExportService 统一导出服务:支持 6 种数据源、3 种格式JSON/CSV/Markdown
    • 数据源:收藏、购物清单、饮食记录、烹饪笔记、每周菜单、浏览记录
    • 格式JSON数据备份、CSVExcel 编辑、Markdown阅读分享
    • 支持单源导出和一键全量导出
    • 导出后支持系统分享
  • 📄 DataExportPage 数据导出页面iOS 风格 UI选择格式+数据源+导出/分享
  • 🔌 各 Controller 导出方法
    • FavoritesController: exportToJson/exportToCsv/exportToMarkdown
    • ShoppingListController: exportToJson/exportToCsv/exportToMarkdown
    • MealRecordController: exportToJson/exportToCsv/exportToMarkdown
    • CookingNoteController: exportToJson/exportToCsv/exportToMarkdown
    • WeeklyMenuController: exportToJson/exportToCsv/exportToMarkdown
    • BrowseHistoryController: exportToJson/exportToCsv

🐛 修复 — 后台恢复假离线

  • 问题:返回桌面后,后台会断网,再打开一直显示无网络,过一会被系统清理后台
  • 根因应用从后台恢复时DNS 预检结果过期(_dnsChecked=true_dnsReachable=false5 分钟内不重新检查,导致所有请求走缓存或失败
  • 修复
    • ConnectivityService 添加 WidgetsBindingObserverresumed 时主动检查网络
    • 网络恢复时触发 DNS 预检重置(ApiService.resetDnsCheck()
    • 新增异步恢复回调机制 addOnNetworkRestoredAsync()

修改文件

  • lib/src/services/data/offline_service.dart — 新建:离线服务核心
  • lib/src/services/data/data_export_service.dart — 新建:数据导出服务
  • lib/src/widgets/states/offline_indicator.dart — 新建:增强版离线指示器
  • lib/src/pages/profile/data_export_page.dart — 新建:数据导出页面
  • lib/src/services/connectivity_service.dart — 生命周期感知+DNS重检+异步恢复回调
  • lib/src/services/api/api_service.dart — 新增 resetDnsCheck() 方法
  • lib/src/services/data/hive_service.dart — 新增 getAllMealRecords() 方法
  • lib/src/widgets/states/offline_banner.dart — 优先使用 OfflineService 数据源
  • lib/src/app_binding.dart — 注册 OfflineService 和 DataExportService
  • lib/src/services/core/app_service.dart — 注册 DNS 重检回调
  • lib/src/config/app_routes.dart — 新增 dataExport 路由
  • lib/src/pages/profile/profile_settings.dart — 新增数据导出入口
  • lib/src/controllers/data/favorites_controller.dart — 新增 exportToMarkdown
  • lib/src/controllers/data/shopping_list_controller.dart — 新增 exportToJson/exportToCsv/exportToMarkdown
  • lib/src/controllers/data/meal_record_controller.dart — 新增 exportToJson/exportToCsv/exportToMarkdown
  • lib/src/controllers/data/cooking_note_controller.dart — 新增 exportToJson/exportToCsv/exportToMarkdown
  • lib/src/controllers/data/weekly_menu_controller.dart — 新增 exportToJson/exportToCsv/exportToMarkdown
  • lib/src/controllers/data/browse_history_controller.dart — 新增 exportToJson/exportToCsv

[0.97.36] - 2026-04-17

🔧 修复 — Web端 Platform._operatingSystem 崩溃

问题描述

  • 🐛 Web端崩溃Unsupported operation: Platform._operatingSystem
  • 🐛 根因crash_guard_service.dart 直接使用 dart:ioPlatform
  • 🐛 影响范围:错误报告生成(L137) + 错误对话框显示(L426)

修复方案

  • 🔄 移除直接导入:删除 import 'dart:io',改用项目已有的 PlatformUtils
  • 🛡️ 使用兼容层Platform.operatingSystemPlatformUtils().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: 加载超时,请检查网络连接"
  • 🐛 根因1connectTimeout: 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 四种请求方法均支持回退逻辑
  • 📝 详细日志:添加调试日志便于追踪请求路径(代理/直连)

技术实现

// 核心流程:
// 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

新增 — 隐私政策与用户协议页面 + 首次引导页

新增功能

  • 🔒 隐私政策页面:新增隐私政策与用户协议页面,支持分段切换和左右滑动浏览
  • 📋 公开组件PrivacyPolicyContentUserAgreementContent 为公开类,可供其他页面调用
  • 🔗 关于页面跳转:关于页面"软件协议"入口点击后跳转至新页面
  • 🎬 首次引导页:新增引导页,首次启动展示欢迎信息和协议,用户同意后方可使用
  • 协议拦截:启动时检查协议同意状态,未同意则跳转引导页,不同意则退出应用

修改文件

  • 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.29] - 2026-04-17

新增 — 点餐助手PHP后端 + SSE实时推送 + 数据清理

功能描述

  • 🖥️ PHP后端APIkitchen.php 完整CRUD接口JSON文件存储文件锁保证并发安全
  • 📡 SSE实时推送kitchen_sse.php Server-Sent Events端点App更新后网页端实时刷新
  • 🗑️ 数据清理App端支持7天/30天过期清理、本地+服务器联合清理、清空全部历史
  • ☁️ 远程同步OrderApiService 对接真实API创建/更新/删除操作同步到服务器
  • 🌐 网页端SSEweb_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后端APICRUD + 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.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.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及之前),功能已归档至软件特性清单。