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
相关产品推荐
相关产品推荐

