Skip to content

Flutter 模拟器调试时软键盘不显示?我踩坑了,你别再踩了

最近在用 Flutter 开发一个输入框相关的功能,结果在 Android 模拟器上一运行,点击输入框——诶?软键盘居然没弹出来?!

控制台还打印了一堆我看不太懂的日志:

onRequestShow at ORIGIN_CLIENT reason SHOW_SOFT_INPUT fromUser false
D/InputMethodManager(20419): showSoftInput() view=io.flutter.embedding.android.FlutterView{e7c1ea8 VFE...... .F...... 0,0-1280,2856 #1 aid=1073741824} flags=0 reason=SHOW_SOFT_INPUT

乍一看,好像一切都在“正常工作”,但就是不弹键盘。代码没报错,页面没崩溃,但你就是输不了字,真的让人抓狂。

一开始我以为是 Flutter 的锅

我一度以为是我哪里写错了,疯狂排查代码,重启模拟器、热重载、甚至换模拟器镜像,全都试了一遍——依然不行。

直到我灵机一动去查了一下“模拟器软键盘不弹”的问题,才发现:

问题根本不在代码,是模拟器设置的问题!

正确的解决方法来了

打开你的 Android 模拟器,按照以下步骤操作:

  1. 点击模拟器里的 设置
  2. 进入 系统 -> 键盘 -> 屏幕键盘
  3. 点进去你正在使用的输入法(比如 Gboard),点击名字本身,不是右边那个开关!
  4. 进入后找到 实体键盘
  5. “显示屏幕键盘” 选项打开!

搞定之后,重新运行你的 Flutter 应用,再点输入框,软键盘终于弹出来了!泪目……

这个问题其实和 Flutter 没关系,是 Android 模拟器的默认行为搞的鬼。它默认以为你是用实体键盘(电脑的键盘),就不弹屏幕键盘了。

以后只要你在模拟器里调试需要输入的功能,记得第一时间检查这个设置,避免跟我一样在这破问题上浪费大半天。

希望这个小坑能帮你避过去~如果你也遇到了类似的 Flutter 奇葩问题,欢迎交流!