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 模拟器,按照以下步骤操作:
- 点击模拟器里的 设置
- 进入 系统 -> 键盘 -> 屏幕键盘
- 点进去你正在使用的输入法(比如 Gboard),点击名字本身,不是右边那个开关!
- 进入后找到 实体键盘
- 把 “显示屏幕键盘” 选项打开!
搞定之后,重新运行你的 Flutter 应用,再点输入框,软键盘终于弹出来了!泪目……
这个问题其实和 Flutter 没关系,是 Android 模拟器的默认行为搞的鬼。它默认以为你是用实体键盘(电脑的键盘),就不弹屏幕键盘了。
以后只要你在模拟器里调试需要输入的功能,记得第一时间检查这个设置,避免跟我一样在这破问题上浪费大半天。
希望这个小坑能帮你避过去~如果你也遇到了类似的 Flutter 奇葩问题,欢迎交流!