2017-02-08 11 views
3

У меня есть ситуация, когда мне нужно программно сфокусироваться на 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; 
      }); 
      } 
     ), 
     ], 
    ); 
    } 
} 
+0

Похож на ошибку. –

+1

Подано сообщение об ошибке: https://github.com/flutter/flutter/issues/7985 – Dvdwasibi

ответ

0

Это было решено, что это ошибка, и отслеживается на #7985.