Files
kitchen/CHANGELOG.md
Developer 9aa8565ca7 release
2026-04-14 07:12:18 +08:00

10 KiB
Raw Blame History

Changelog

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

[0.94.0] - 2026-04-14

🎬 迷你卡片动画系统重构 — 滑出飞走+入场弹性+回弹弹簧+图片预加载+缓存

优化

  • 🎬 滑出飞走动画 — 拖拽超过阈值后,卡片带旋转+位移飞出屏幕easeIn加速不再瞬间跳变
  • 🎬 入场弹性动画 — 新卡片从 scale 0.88→1.0 + opacity 0→1 弹性进入easeOutBack回弹曲线
  • 🎬 回弹弹簧动画 — 拖拽未达阈值时卡片平滑弹回原位easeOut减速不再硬切
  • 🎬 下一张卡片联动 — 滑出过程中,下一张卡片从 scale 0.92→1.0 + opacity 0.6→1.0 逐渐浮现
  • 🖼️ 图片预加载 — 切换卡片时 precacheImage 预加载后续3张图片消除转圈等待
  • 🖼️ CachedNetworkImage 替换 — MiniCardImageView/MiniCardViewer/MiniCardPage 全部替换 Image.network → CachedNetworkImage
    • 磁盘缓存 maxWidthDiskCache/maxHeightDiskCache: 800/1200
    • 内存缓存 memCacheWidth/memCacheHeight: 800
    • fadeIn 300ms easeOut 渐入效果
  • 🎬 滑出动画期间禁止拖拽 — 防止动画中重复触发滑动手势

Bug修复

  • 🐛 动画控制器未绑定 — 原 _likeAnimController/_nopeAnimController 创建后从未驱动任何动画,卡片切换全靠 setState 硬切
  • 🐛 图片无缓存 — Image.network 每次切换都重新请求网络,导致转圈加载

影响文件

  • lib/src/pages/discover/mini_card/mini_card_page.dart — 动画系统重构+CachedNetworkImage+预加载
  • lib/src/pages/discover/mini_card/mini_card_image_view.dart — CachedNetworkImage替换
  • lib/src/pages/discover/mini_card/mini_card_viewer.dart — CachedNetworkImage替换

[0.93.0] - 2026-04-14

🎨 视觉拉满 + 滚动卡顿修复 + 布局Bug修复

优化

  • 🎨 液态玻璃效果拉满 — 迷你卡片3层BackdropFilter+光感折射+荤素标签玻璃效果
  • 🎨 底部栏恢复毛玻璃 — 瀑布流底部状态栏恢复BackdropFilter(sigmaX/Y:20)+渐变+边框
  • 🖼️ CachedNetworkImage — 迷你卡片图片改用CachedNetworkImage避免滚动时重复网络请求
  • 🏗️ ValueNotifier隔离 — 副栏显隐状态改用ValueNotifier不再触发全局setState重建瀑布流
  • 🏗️ merge保留缓存 — DiscoverData.merge()保留已有flattenedItems缓存并追加新项避免重新shuffle导致滚动跳动
  • 🏗️ RepaintBoundary — 迷你卡片添加RepaintBoundary隔离渲染不影响其他卡片绘制

Bug修复

  • 🐛 滚动卡顿 — 移除_applyPendingDiscoverIfAny中的clearCache()调用避免滚动中列表重新shuffle
  • 🐛 Column溢出 — 错误页和空数据页改用SingleChildScrollView包裹防止溢出
  • 🐛 SliverMasonryGrid null check — 空chunk不再创建SliverMasonryGrid防止null check错误
  • 🐛 tag_discover_card溢出 — 标签类型和数量文字添加Flexible包裹防止Row溢出
  • 🐛 image_viewer_page — _extractImageUrl改为imageUrlExtractor回调参数修复未定义方法错误
  • 🐛 discover_waterfall Colors — 添加material导入修复Colors未定义错误
  • 🐛 主页缓存恢复 — _loadDiscover已有数据时使用merge而非替换保持列表顺序稳定

影响文件

  • lib/src/pages/home/home_page.dart — ValueNotifier隔离+merge策略+布局修复
  • lib/src/widgets/discover/mini_card_discover_card.dart — 液态玻璃拉满+CachedNetworkImage+RepaintBoundary
  • lib/src/widgets/discover/discover_waterfall.dart — 底部栏毛玻璃+空chunk保护+material导入
  • lib/src/widgets/discover/tag_discover_card.dart — Row溢出修复
  • lib/src/models/discover_model.dart — merge保留flattenedItems缓存
  • lib/src/widgets/image_viewer/image_viewer_page.dart — imageUrlExtractor回调

[0.92.9] - 2026-04-14

🃏 迷你卡片优化 — 液态玻璃效果+详情跳转+Bug修复

优化

  • 🎨 液态玻璃效果重设计 — 底部信息区改为"装水玻璃杯"效果
    • 使用 ClipRect + BackdropFilter(sigmaX/Y: 30) 实现高斯模糊
    • 顶部白色半透明边框(0.25 alpha)模拟光线折射
    • 渐变背景(0.05→0.12 alpha)模拟水杯透明度
    • 文字添加 Shadow(black54/black38) 增强可读性
    • 按钮使用渐变玻璃效果(0.25→0.1 alpha)替代纯色
  • 🆕 categoryName 显示 — 迷你卡片底部信息区显示分类名称标签(液态玻璃胶囊样式)
  • 🆕 详情按钮API搜索 — 点击详情按钮通过 RecipeRepository.search() 搜索菜名获取API真实ID再跳转菜谱详情页
  • 🆕 全屏查看器详情按钮 — 全屏查看器中详情按钮也通过API搜索跳转

Bug修复

  • 🐛 setState after dispose — _goNext()/_goPrev() 添加 mounted 检查,防止动画回调在页面销毁后调用 setState
  • 🐛 MediaQuery initState 报错 — 图片预加载从 initState 移至 didChangeDependencies
  • 🐛 分享功能改为图片分享 — 使用 RepaintBoundary 截取卡片组件为PNG图片通过 ShareXFiles 分享
  • 🐛 PaginatedData 缺少 totalPages — 补充必需参数

影响文件

  • lib/src/pages/discover/mini_card_page.dart — 液态玻璃重设计+详情跳转+Bug修复

[0.92.8] - 2026-04-14

🃏 迷你卡片页面 — Tinder风格滑动浏览菜品 + 首页瀑布流插入

新增功能

  • 🆕 迷你卡片页面 — 交友软件风格左右滑动浏览菜品
    • 数据源:/assets/recipes.json341道菜11个分类
    • 图片URLhttps://eat.wktyl.com/api/assets/mpic/{id}.jpeg
    • 左右拖拽滑动切换菜品卡片,拖拽距离>80触发滑动
    • 滑动时显示"❤️ 喜欢"或"👎 下一道"标签
    • 底部4个操作按钮下一道/收藏/喜欢/上一道
    • 进度条显示浏览进度
  • 🆕 分类筛选 — 顶部横向滚动分类标签(全部/素菜/荤菜/水产等11类
  • 🆕 搜索功能 — 搜索菜品名称,点击结果跳转到对应卡片
  • 🆕 网格视图 — 卡片/网格双视图切换响应式布局2/3/4列
  • 🆕 收藏集成 — 卡片右上角收藏按钮,与全局收藏系统联动
  • 🆕 本地缓存 — SharedPreferences存储5-10条记录不含图片离线fallback
  • 🆕 喜欢/不喜欢记录 — 持久化到SharedPreferences重启保留
  • 🆕 缓存管理 — 缓存管理页面新增迷你卡片缓存清理入口
  • 🆕 图片独立组件 — _MiniCardImageView 独立组件,文本在图片内底部展示
  • 🆕 液态玻璃效果 — 卡片顶部操作栏和底部信息区使用 GlassContainer 毛玻璃
  • 🆕 全屏图片查看器 — 点击卡片打开全屏 PageView左右滑动切换异步预加载5张相邻图片
  • 🆕 分享按钮 — 使用 share_plus 分享菜品信息+图片URL
  • 🆕 缓存优先加载 — 查看过的卡片存入缓存,下次进入先显示缓存再内部加载
  • 🆕 首页瀑布流插入 — 迷你卡片以全宽横幅插入首页瀑布流1:20比例
    • 每20个瀑布流item后插入1个迷你卡片横幅
    • 点击横幅跳转迷你卡片页面支持指定卡片ID
    • MiniCardDiscoverCard 组件:液态玻璃+全宽图片+分类标签
  • 🆕 MiniCardService — 独立数据服务,支持缓存优先,供多页面复用
  • 🆕 路由参数支持 — 迷你卡片页面支持 initialRecipeId 参数,从首页跳转到指定卡片

入口

  • 个人中心 → 迷你卡片原null路由已连接
  • 首页瀑布流 → 迷你卡片横幅每20个item后出现

影响文件

  • lib/src/models/mini_card_model.dart — 新建数据模型
  • lib/src/pages/discover/mini_card_page.dart — 重构:图片独立组件+全屏查看器+分享+缓存优先
  • lib/src/config/app_routes.dart — 路由支持 initialRecipeId 参数
  • lib/src/pages/profile/profile_home.dart — 连接入口
  • lib/src/pages/profile/data/cache_manage_page.dart — 新增迷你卡片缓存管理
  • lib/src/widgets/discover/mini_card_discover_card.dart — 新建瀑布流迷你卡片横幅组件
  • lib/src/widgets/discover/discover_waterfall.dart — 支持迷你卡片插入SliverMainAxisGroup
  • lib/src/models/discover_model.dart — 新增 miniCard 类型和 MiniCardRecipeRef
  • lib/src/services/data/mini_card_service.dart — 新建迷你卡片数据服务
  • lib/src/pages/home/home_page.dart — 加载迷你卡片数据,传递给瀑布流

[0.92.7] - 2026-04-14

🧬 营养成分交互增强 + 食材详情页修复

新增功能

  • 🆕 营养成分展开更多 — 菜品详情页详细营养成分标题右侧新增"更多"按钮
    • 点击弹出底部对话框CupertinoModalPopup从下到上弹出
    • 每个营养成分显示emoji图标+名称+数值+跳转提示
    • 点击营养成分跳转到含该成分的菜品列表页
    • 营养成分emoji映射表31种营养成分对应emoji
  • 🆕 营养成分菜品列表页 — 新增 NutritionRecipeListPage
    • 使用 api_filter.php?act=filter_recipes&nutrition_name= 接口查询
    • 支持分页加载,显示菜品卡片+图片
    • 路由: /nutrition-recipe-list

修复内容

  • 🐛 食材详情菜谱数量显示0 — 修复 recipeCount 始终为0的问题
    • 根因API ingredient_detail 不返回 statistics 字段,但返回 related_recipes 数组
    • 修复IngredientModel 新增 relatedRecipes 字段和 effectiveRecipeCount getter
    • statistics.recipeCount 为0时fallback 到 related_recipes.length
    • 同时支持 recipe_countview_count 顶层字段
  • 🔧 食材详情卡片位置调整 — 将"食材详情"卡片移到"储存方法"下面

影响文件

  • lib/src/widgets/recipe_detail/info/recipe_nutrition_section.dart — 新增展开更多+弹窗+跳转
  • lib/src/pages/discover/nutrition_recipe_list_page.dart — 新建
  • lib/src/config/app_routes.dart — 新增路由
  • lib/src/models/recipe/ingredient_model.dart — 新增relatedRecipes+effectiveRecipeCount
  • lib/src/pages/tools/ingredient_detail_page.dart — 修复count+调整卡片顺序

📌 已移除较早版本记录(0.92.6及之前),功能已归档至软件特性清单。