diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b17ba17..35f573ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,26 @@ 所有重要变更均记录于此文件。格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/)。 -> 保留最近 10 个版本(v6.89.1 ~ v6.94.3)。更早版本(v6.87.0 ~ v6.89.0)的特性已合并进软件特性功能文档,详见各版本条目。 +> 保留最近 10 个版本(v6.89.1 ~ v6.94.5)。更早版本(v6.87.0 ~ v6.89.0)的特性已合并进软件特性功能文档,详见各版本条目。 + +*** + +## [v6.94.5] - 2026-06-19 + +### 🐛 修复 + +#### 工作台设置页 Slider 报错(No Material widget found) +- **Issue: 工作台设置页打开即崩溃,报 "No Material widget found. Slider widgets require a Material widget ancestor"**:`WorkbenchSettingsPage` 使用 `CupertinoPageScaffold`(无 Material 祖先),但 `_SliderTile` 使用 Material 组件 `Slider`,导致断言失败。 + - **修复**:将 `Slider` 替换为 `CupertinoSlider`,符合项目规则"优先使用 Cupertino 组件",并使用 `ext.accent` 作为激活色保持主题一致 + - **文件**:lib/features/settings/presentation/workbench/workbench_settings_page.dart + +#### 移动端横屏工作台布局空白问题 +- **Issue: 移动端横屏工作台模式中栏左右两边有空白,要求缩短空白用来显示中栏页面**: + - **根因1**:双栏模式中栏宽度被 `* 0.75` 缩放,导致中栏宽度不足,页面内容两侧出现空白 + - **根因2**:中栏内嵌页面(HomePage/DiscoverPage 等)使用 `SafeArea(bottom: false)`,横屏时 `left`/`right` 默认为 `true`,会添加水平 padding 导致左右空白 + - **修复1**:移除双栏模式 `* 0.75` 缩放,中栏使用完整宽度(与三栏模式一致) + - **修复2**:`_buildMiddlePanel` 使用 `MediaQuery.removePadding` 移除水平 SafeArea padding,避免横屏时左右空白 + - **文件**:lib/core/layout/workbench/workbench_layout.dart *** diff --git a/lib/core/layout/workbench/workbench_layout.dart b/lib/core/layout/workbench/workbench_layout.dart index e5640fa4..0571ed92 100644 --- a/lib/core/layout/workbench/workbench_layout.dart +++ b/lib/core/layout/workbench/workbench_layout.dart @@ -3,7 +3,7 @@ /// 创建时间: 2026-06-18 /// 更新时间: 2026-06-19 /// 作用: 微信PC式三栏工作台布局(导航栏+中栏列表+右栏详情) -/// 上次更新: 右栏返回双按钮(pop+clear);拖拽clamp合并取min;双栏注释修正;构建失败移除无效条目改用canPop判断 +/// 上次更新: 修复移动端横屏中栏左右空白问题;移除双栏模式 *0.75 缩放;中栏移除水平 SafeArea padding /// ============================================================ import 'package:flutter/cupertino.dart'; @@ -162,12 +162,13 @@ class _WorkbenchLayoutState extends ConsumerState { ], ); } else { - // 双栏模式:中栏紧凑显示(宽度*0.75)+ 分割条 + 右栏 + // 双栏模式:中栏使用完整宽度(移除 *0.75 缩放,避免横屏空白浪费) + // 中栏宽度通过 _middleWidth 自适应,默认 _defaultMiddleWidth contentArea = Row( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ SizedBox( - width: (_middleWidth ?? _defaultMiddleWidth) * 0.75, + width: _middleWidth ?? _defaultMiddleWidth, child: middlePanel, ), divider, @@ -230,9 +231,15 @@ class _WorkbenchLayoutState extends ConsumerState { Widget _buildMiddlePanel() { // 中栏显示当前 Tab 的一级页面(HomePage/DiscoverPage/ProfilePage) // 通过 navigationShell 提供 + // 移除水平 SafeArea padding,避免横屏时左右出现空白 return Container( color: Theme.of(context).colorScheme.surfaceContainerLowest, - child: widget.navigationShell, + child: MediaQuery.removePadding( + context: context, + removeLeft: true, + removeRight: true, + child: widget.navigationShell, + ), ); } diff --git a/lib/features/settings/presentation/workbench/workbench_settings_page.dart b/lib/features/settings/presentation/workbench/workbench_settings_page.dart index d017118a..957c4ac8 100644 --- a/lib/features/settings/presentation/workbench/workbench_settings_page.dart +++ b/lib/features/settings/presentation/workbench/workbench_settings_page.dart @@ -1,9 +1,9 @@ /// ============================================================ /// 闲言APP — 工作台模式设置页面 /// 创建时间: 2026-06-18 -/// 更新时间: 2026-06-18 +/// 更新时间: 2026-06-19 /// 作用: 整合分屏/工作台相关设置为独立页面,扩展交互增强功能 -/// 上次更新: 修复编译错误,对齐 AppThemeExtension/SplitViewState 字段名,使用 i18n 翻译键 +/// 上次更新: 修复 Slider 缺少 Material 祖先报错,改用 CupertinoSlider 适配 CupertinoPageScaffold /// ============================================================ import 'package:flutter/cupertino.dart'; @@ -396,11 +396,12 @@ class _SliderTile extends StatelessWidget { const SizedBox(height: 2), Text(subtitle, style: TextStyle(fontSize: 13, color: ext.textHint)), - Slider( + CupertinoSlider( value: value, min: min, max: max, divisions: divisions, + activeColor: ext.accent, onChanged: onChanged, ), ],