You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:36:02