我遇到需要以编程方式关注InputField的情况(例如响应按下按钮)。
我正在使用Focus.moveTo功能;但是,即使InputField被聚焦(出现闪烁的光标),键盘也不会启动。
似乎最好的解决方案是在_InputFieldState中调用RequestKeyboard()函数,但这是私有的。
实现这一目标的最佳方法是什么?
以下是显示工作流程的代码示例:
class InputFieldWrapper extends StatefulWidget {
@override
_InputFieldWrapperState createState() => new _InputFieldWrapperState();
}
class _InputFieldWrapperState extends State<InputFieldWrapper> {
InputValue _currentInput = new InputValue(text: 'hello');
// GlobalKey for the InputField so we can focus on it
GlobalKey<EditableTextState> _inputKey = new GlobalKey<EditableTextState>();
@override
Widget build(BuildContext context) {
return new Column(
children: [
// Button that should focus on the InputField when pressed
new IconButton(
icon: new Icon(Icons.message),
onPressed: () {
Focus.moveTo(_inputKey);
},
),
// InputField that should be focused when pressing the Button
new InputField(
value: _currentInput,
key: _inputKey,
onChanged: (InputValue input) {
setState(() {
_currentInput = input;
});
}
),
],
);
}
}