Flutter开发中iOS模拟器软键盘不显示且Android Studio控制台报错
报错场景
在Android Studio中开发Flutter项目,调试iOS模拟器时,点击输入框后软键盘无法正常弹出,控制台同步输出如下错误日志:
[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: 'package:flutter/src/services/hardware_keyboard.dart': Failed assertion: line 790 pos 16: '(data.physical == 0 && data.logical == 0) || (data.physical != 0 && data.logical != 0)': is not true.
问题根因
这是2.x到3.0.x版本区间Flutter SDK的已知缺陷,当iOS模拟器绑定了外部物理键盘时,Flutter的硬件键盘事件校验逻辑出现异常,既未识别到物理键盘输入源,也未触发软键盘唤起逻辑,最终触发断言校验失败。
修复方案
- 临时手动唤起:在iOS模拟器顶部菜单栏依次选择 I/O > Keyboard > Toggle Software Keyboard ,即可手动调出软键盘,该配置单次调试生效,模拟器重启后需要重新操作。
- 关闭物理键盘绑定:在iOS模拟器顶部菜单栏依次选择 I/O > Keyboard > Connect Hardware Keyboard ,取消该选项的勾选即可,后续模拟器所有输入场景默认唤起软键盘,不会再触发该报错。
- 升级SDK永久修复:该缺陷已在3.3.0及以上稳定版Flutter SDK中修复,执行
flutter upgrade命令升级到最新稳定版即可从根源解决问题,无需额外修改模拟器配置。
内容的提问来源于stack exchange,提问作者Tomas Ward
相关产品推荐
相关产品推荐

