flutter App中禁止软键盘弹出,监听硬键盘输入的方法
之前的工作中遇到一个需求,想点击输入框后不弹出软键盘,使用设备硬键盘输入,解决方法:设置输入框只读并且显示光标,然后配置键盘监听就可以了。
TextFormField不弹出软键盘的写法
TextFormField(
controller: _controller,
showCursor: true, // 显示光标
readOnly: true, // 设置只读,点击输入框时便不会弹出软键盘
onEditingComplete: () {
onOperateLot('Add');
},
validator: (String value) {
if (value == null || value.isEmpty) {
return '该项为必填项';
}
return null;
},
)
输入框的外层用RawKeyboardListener包裹起来,即:
RawKeyboardListener( // 监听键盘事件
focusNode: FocusNode(),
onKey: (RawKeyEvent event) { //
if (event.runtimeType == RawKeyDownEvent) {
if (event.data is RawKeyEventDataAndroid) {
RawKeyEventDataAndroid data =
event.data as RawKeyEventDataAndroid;
// data.keyCode.toString() 获取按键值
// 其他操作
}
}
},
child: TextFormField(
controller: _controller,
showCursor: true, // 显示光标
readOnly: true, // 设置只读,点击输入框时便不会弹出软键盘
onEditingComplete: () {
onOperateLot('Add');
},
validator: (String value) {
if (value == null || value.isEmpty) {
return '该项为必填项';
}
return null;
},
)
)
|