Flutter开发Windows触屏桌面应用如何唤起系统软键盘
实现方案
Flutter桌面端默认未配置Windows触屏软键盘的自动唤起逻辑,可通过以下两种方案实现需求:
方案一:直接调用Windows系统API唤起软键盘
该方案无需依赖额外封装的插件,通过调用Windows内置的TabTip程序实现软键盘的开关控制:
- 唤起软键盘的系统命令:
start "tabtip" "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe" - 关闭软键盘的系统命令:
taskkill /IM TabTip.exe /F - 将唤起命令绑定到
TextFormField的onTap回调,关闭命令绑定到onEditingComplete或onFieldSubmitted回调即可。
示例代码如下,可配合process_run包实现命令调用:
import 'package:process_run/shell.dart'; // 唤起软键盘 Future<void> openSoftKeyboard() async { final shell = Shell(); await shell.run('start "tabtip" "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe"'); } // 关闭软键盘 Future<void> closeSoftKeyboard() async { final shell = Shell(); await shell.run('taskkill /IM TabTip.exe /F'); } // 输入框绑定逻辑 TextFormField( onTap: () => openSoftKeyboard(), onEditingComplete: () => closeSoftKeyboard(), // 其余配置项 )
方案二:使用Windows软键盘专用插件
可直接使用封装好的Windows软键盘调用插件,无需自行处理系统命令适配问题:
- 在
pubspec.yaml中添加对应插件依赖 - 调用方式如下:
import 'package:flutter_virtual_keyboard_window/flutter_virtual_keyboard_window.dart'; // 唤起软键盘 FlutterVirtualKeyboardWindow.showKeyboard(); // 关闭软键盘 FlutterVirtualKeyboardWindow.hideKeyboard();
同样将上述方法绑定到输入框的对应回调即可。
注意事项
- 需提前在目标HMI设备的Windows设置中开启触摸键盘功能,路径为:设置 > 时间和语言 > 输入 > 触摸键盘,勾选「没有连接键盘时显示触摸键盘」选项
- 若出现TabTip调用失败的情况,确认目标设备系统版本为Windows 10 1607及以上,低于该版本的Windows系统未内置该程序
- 部分企业版Windows默认禁用触摸键盘功能,需提前在组策略中放开对应权限
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

