You need to enable JavaScript to run this app. Flutter 模拟器与真机环境下输入键盘唤起后立即消失问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Flutter 模拟器与真机环境下输入键盘唤起后立即消失问题求助

问题排查与修复方案
  • 修正Modal Bottom Sheet核心配置:弹出弹窗时必须传入isScrollControlled: true,在弹窗最外层添加底部边距适配,边距值绑定MediaQuery.viewInsetsOf(context).bottom,避免弹窗因软键盘弹起的高度变动触发焦点异常回收。
  • 校准焦点节点逻辑:
    • 不要在组件build流程中重复创建绑定TextField的FocusNode
    • 排查弹窗点击回调里是否误加了FocusScope.of(context).unfocus()类强制失焦逻辑
    • 若需弹窗弹出后自动唤起键盘,需将焦点请求逻辑放到帧渲染完成回调中执行,不要在初始build阶段直接调用_komNode.requestFocus()
      对应的代码示例:
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _komNode.requestFocus();
    });
    
  • 针对compile SDK 28的历史bug,无需降级编译版本,直接修改Android端配置即可绕开:在AndroidManifest.xml对应的Activity配置项里,将软键盘调整模式设置为adjustResize,完全兼容现有项目的编译配置、不影响Sound Null Safety相关代码运行。
  • 排查动态宽度逻辑的副作用:代码中width: hasText ? 300 : 350的动态宽度切换逻辑,需要确认状态变化时没有强制销毁、重建TextField组件树——如果输入框在键盘弹起的瞬间被连带重绘销毁,系统就会自动关闭键盘,表现为软键盘闪一下消失。可以将动态宽度的容器替换为AnimatedContainer做宽度过渡,避免输入框本身被连带重构。
  • 给TextField手动设置scrollPadding: EdgeInsets.all(20),修正输入框与软键盘的高度计算逻辑,避免因高度计算冲突触发的焦点回收。

内容的提问来源于stack exchange,提问作者Ryan Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 09:27:05