Files
FruitServer/docs/plans/2026-10-21-K86.22-composer-safearea.md

2.4 KiB

K86.22 评论输入浮层去除底部安全区位移实施计划

目标

修复 Android 收起评论输入键盘后,SafeArea 引入底部手势条 padding,导致输入区上移约 48px 的问题。输入区位置只由固定 _pinnedKeyboardInset 决定,键盘收起前后保持像素级一致。

根因

  • 输入面板 Material 内使用 SafeArea(top: false)。
  • 键盘可见时系统导航栏被 IME 覆盖,MediaQuery.padding.bottom 为 0。
  • 键盘收起后手势条 padding 恢复,SafeArea 自动追加约 48px 底部内边距,把输入区顶高。
  • K86.19 的白色实底和固定 12px 内容内边距本身正常,问题仅来自额外安全区。

范围

  • ReelShort lib/pages/player/widgets/comment_composer_sheet.dart
  • ReelShort test/comment/drama_comments_sheet_test.dart
  • FruitServer docs/plans/PROGRESS.md

实现计划

  1. 面板 SafeArea 设置 bottom: false,不再消费 MediaQuery.padding.bottom。
  2. 保持 Positioned(bottom: 0)、白色 Material 铺到屏幕底部、顶部圆角 20。
  3. 键盘区域继续由内部 Padding(bottom: _pinnedKeyboardInset) 决定,内容区底部保持固定 12。
  4. 透明外部点击或发表成功仍为关闭入口;返回键/IME 下箭头只收键盘。

测试计划

  • 先新增失败测试:视口 390×844,键盘弹起时 viewInsets.bottom=180、padding.bottom=0,记录输入框全局矩形。
  • 收起键盘时同时设置 viewInsets.bottom=0、padding.bottom=48,断言输入框 top、bottom、height 偏移均小于 0.1。
  • 旧实现预期因 SafeArea 多出 48px 而失败;修复后运行完整评论面板测试、静态分析和全量 Flutter 测试。

风险与处理

  • 关闭底部 SafeArea 后,输入内容依赖固定 12px 底部内边距;与 K86.19 白色实底填充一致,不再叠加系统手势条。
  • 面板本身仍延伸到屏幕底部,视觉圆角和白底不受影响。
  • 不改 KeyboardInsetNotifier、pinned 稳定捕获、关闭规则或评论列表布局。

Git

  • ReelShort 从 develop 创建 fix/composer-safearea。
  • 提交:fix(player): 去除评论输入面板安全区导致的收键盘位移。
  • 作者:Zhou Weidong <502333560@qq.com>。
  • --no-ff 合回 develop 并 push,不使用 force push,不执行 git add -A。
  • FruitServer 追加 PROGRESS 留痕;不安装真机,完成后等待用户验收。