У меня есть ситуация, когда мне нужно программно сфокусироваться на InputField (например, в ответ на нажатие кнопки).Программная фокусировка на InputField и клавиатуре открытия
Я пользуюсь функцией Focus.moveTo; однако, несмотря на то, что InputField сфокусирован (появляется мигающий курсор), клавиатура не поднимается.
Кажется, лучшим решением было бы вызвать функцию RequestKeyboard() в _InputFieldState, но это личное.
Что было бы лучшим способом достичь этого?
Вот пример кода, показывающий рабочий процесс:
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;
});
}
),
],
);
}
}
Похож на ошибку. –
Подано сообщение об ошибке: https://github.com/flutter/flutter/issues/7985 – Dvdwasibi