11 KiB
11 KiB
Changelog
All notable changes to this project will be documented in this file.
[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.json(341道菜,11个分类) - 图片URL:
https://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 类型和 MiniCardRecipeReflib/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字段和effectiveRecipeCountgetter - 当
statistics.recipeCount为0时,fallback 到related_recipes.length - 同时支持
recipe_count和view_count顶层字段
- 根因:API
- 🔧 食材详情卡片位置调整 — 将"食材详情"卡片移到"储存方法"下面
影响文件
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+effectiveRecipeCountlib/src/pages/tools/ingredient_detail_page.dart— 修复count+调整卡片顺序
[0.92.6] - 2026-04-14
🖼️ 图片加载修复 + 收藏页交互增强 + 详情页AI提示
修复内容
- 🐛 菜品卡片图片不显示 — 修复HTTP→HTTPS协议问题+Fallback链机制
- RecipeImage 改为 StatefulWidget,支持URL链自动fallback(coverUrl→picId a→picId b)
- HTTP→HTTPS 自动转换,解决iOS阻止HTTP请求问题
- DiscoverRecipe 模型新增
picId字段和resolvedCoverUrlgetter - 从cover URL中自动提取picId(正则匹配
/pic/(\d+)) - RecipeDiscoverCard 简化图片加载逻辑,使用模型字段替代本地计算
- RecipePicIdCard 修复HTTP→HTTPS显示问题
新增功能
- 🆕 收藏页跳转详情 — 点击收藏菜品卡片跳转菜品详情页
- 🆕 收藏页下拉工具中心 — 类似微信小程序下拉面板,下拉显示工具中心
- 支持手势拖拽和动画过渡
- 工具中心内嵌模式(隐藏导航栏)
- 🆕 工具中心响应式布局 — 一行2列,横屏自动多列
- 🆕 首页回顶部 — AppBar右上角第二个图标改为回顶部功能(不刷新内容)
- 🆕 菜品详情页AI图片提示 — 封面图顶部显示"图片可能为AI生成"横幅,可点击X关闭
影响文件
lib/src/widgets/recipe/recipe_image.dart— 重构为StatefulWidget,添加Fallback链+HTTPS转换lib/src/models/discover_model.dart— 新增picId字段+resolvedCoverUrl getterlib/src/widgets/discover/recipe_discover_card.dart— 简化图片加载逻辑lib/src/widgets/recipe_detail/content/recipe_picid_card.dart— HTTPS修复lib/src/widgets/recipe_detail/header/recipe_cover_image.dart— 新增AI横幅lib/src/pages/profile/social/favorites_page.dart— 跳转详情+下拉工具中心lib/src/pages/tools/tools_center_page.dart— 响应式2列布局+内嵌模式lib/src/pages/home/home_page.dart— 回顶部功能lib/src/widgets/glass/nav/home_app_bar.dart— 图标更换
[0.92.5] - 2026-04-14
🎠 轮播组件优化 — 问候语集成与刷新问题修复
优化内容
- 🔧 问候语集成 — 将问候语从 HomeAppBar 移至轮播组件顶部固定显示
- 左侧显示时间问候(如"夜深了"、"早上好"等)
- 右侧显示日期(MM/DD格式)
- 固定在轮播组件顶部,不随轮播切换
- 点击问候语可切换显示提示语(如"深夜了,注意身体")
- 🔧 液态玻璃效果 — 问候语组件使用真正的 iOS 风格液态玻璃
BackdropFilter模糊背景(sigmaX/Y = glassBlur * 1.2)- 半透明白色背景(深色模式 8% 透明度,浅色模式 25% 透明度)
- 细边框纹路(深色模式 15% 透明度,浅色模式 30% 透明度)
- 🔧 滚动事件隔离 — 使用
NotificationListener阻止轮播滚动事件冒泡- 修复轮播滚动导致搜索框消失的问题
- 修复轮播滚动触发底部卡片刷新的问题
- 🔧 状态隔离优化 — 彻底隔离营养数据监听
- PageView 提取为独立的
_CarouselPageViewStatelessWidget - 营养数据监听提取为独立的
_NutritionDataBuilder组件 - 页面指示器使用
ValueNotifier+ValueListenableBuilder
- PageView 提取为独立的
- 🔧 搜索栏修复 — 修复 HomeAppBar 副栏高度问题,确保搜索栏正常显示
影响文件
lib/src/widgets/carousel/feature_carousel_card.dart— 集成问候语,液态玻璃效果,滚动事件隔离lib/src/widgets/glass/nav/home_app_bar.dart— 移除问候语,简化副栏
[0.92.4] - 2026-04-14
🎠 功能轮播组件 — 首页全新交互体验
新增功能
- 🆕 FeatureCarouselCard — 替换原有营养卡片,提供六个功能入口
- 📊 今日营养 — 展示营养数据环形图(热量、蛋白质、脂肪、碳水)
- 🌟 应用推荐 — 弹窗确认后跳转浏览器访问推荐页面
- 👨🍳 厨艺技巧 — 跳转烹饪技巧页面
- 📈 运营数据 — 跳转数据大屏页面
- 🎲 今天吃什么 — 随机推荐菜谱
- 🎁 敬请期待 — 占位项
交互特性
- ⏱️ 自动轮播 — 3秒间隔自动切换
- 👆 手动滑动 — 支持左右滑动切换
- 🔘 进度指示器 — 底部小圆点显示当前位置
- 🎨 渐变背景 — 每个卡片独特的渐变色设计
- 🌙 深色模式 — 完美适配深色主题
影响文件
lib/src/widgets/carousel/feature_carousel_card.dart— 新建lib/src/pages/home/home_page.dart— 更新引用
📌 已移除较早版本记录(0.92.3及之前),功能已归档至软件特性清单。