2.2 KiB
2.2 KiB
K97 修复 iOS 评论输入弹窗键盘避让
目标
- iOS 评论输入浮层实时跟随
MediaQuery.viewInsets.bottom,确保输入框与发表按钮 位于键盘上方。 - Android 保留既有 MethodChannel + 80ms 防抖 pinned 策略,不恢复底部 SafeArea, 避免键盘收起时 48px 抖动回归。
- 聚焦、
TextInput.show兜底和发表成功提示逻辑不变。
分支
- ReelShort:
fix/k97-ios-comment-keyboard,从最新origin/develop创建。 - FruitServer 仅写计划与 PROGRESS 留痕,不改后端功能代码。
A. 平台区分
_isAndroid = !kIsWeb && defaultTargetPlatform == TargetPlatform.android。- Android:
- 继续监听
KeyboardInsetNotifier。 - 继续使用 80ms 防抖后的
_pinnedKeyboardInset。
- 继续监听
- iOS / 其他平台:
- 不读取 pinned/channel 值。
build中直接读取MediaQuery.viewInsetsOf(context).bottom。- inset 超过屏幕高度 60% 时按 0 处理,负值归零。
B. 面板布局
- 面板主体使用
AnimatedPadding,只设置 bottom:duration: 160mscurve: Curves.easeOutCubic- Android 使用 pinned 值。
- iOS / 其他平台使用实时 viewInsets。
- Material 仍铺到屏幕底部,用于键盘收起后的实色填充。
- Android 不包裹 SafeArea。
- iOS / 其他平台包裹
SafeArea(top: false),保留 home indicator 底部避让。
C. 测试
- iOS +
viewInsets.bottom=300:- 键盘避让 AnimatedPadding 的 bottom 为 300。
comment-composer-post底边位于屏幕高度减 300 之上。
- iOS +
viewInsets=0:padding 为 0。 - Android 既有 pinned/channel、焦点、弹出、关闭、发布用例保持通过。
- 所有平台 override 测试结束恢复
debugDefaultTargetPlatformOverride = null。
门禁
dart analyze lib testflutter testflutter build apk --debugflutter build ios --simulator --no-codesign
Git
- ReelShort 提交:
fix(comment): 修复 iOS 评论输入弹窗键盘避让 - 作者
Zhou Weidong <502333560@qq.com>;禁止git add -A。 --no-ff合回develop并 push,两仓库 PROGRESS 留痕。
约束
- 全程中文;不改后端、ReelShortWeb、specs。
- 不安装或操作真机;完成后停住等待验收。