You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:如何阻止键盘弹出时对话框移位或调整大小

解决Flutter Dialog随键盘弹出移位的方案
  • 核心处理方式是给Dialog套一层MediaQuery并设置removeBottomInset: true,让Dialog忽略键盘弹出带来的底部内边距变化,从而保持原位不被顶起。

    代码示例:

    showDialog(
      context: context,
      builder: (context) {
        return MediaQuery(
          removeBottomInset: true,
          child: Dialog(
            child: SizedBox(
              height: 300,
              padding: const EdgeInsets.all(16),
              child: Column(
                children: const [
                  TextField(decoration: InputDecoration(hintText: "请输入内容")),
                  // 其他需要的组件
                ],
              ),
            ),
          ),
        );
      },
    );
    
  • 如果你用的是系统自带的AlertDialog,同样适用这个方法,把AlertDialog放到上述的MediaQuery组件内部即可。

原理说明:Flutter键盘弹出时会通过MediaQuery传递底部内边距(bottomInset),Dialog默认会根据这个值调整自身位置和大小。设置removeBottomInset: true后,Dialog将不再响应这个内边距变化,键盘会直接覆盖在Dialog内容上方。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:21:31