Flutter Как всегда скрывать клавиатуру, когда нажимаете на TextField, но сохраняете фокус (Keep show cursor)

/path/to/python2.{5,6} /path/to/pip install PackageName не работает?

Для этого для работы с любой версией python, у которой нет уже установленного пита, вам нужно загрузить pip и сделать python*version* setup.py install. Например python3.3 setup.py install. Это устраняет ошибку импорта в комментариях. (Как было предложено @hbdgaf)

0
задан quyen phong tran vuong 19 March 2019 в 07:36
поделиться

2 ответа

Вставьте NoKeyboardEditableText вместо вашего TextField

class NoKeyboardEditableText extends EditableText {

  NoKeyboardEditableText({
    @required TextEditingController controller,
    TextStyle style = const TextStyle(),
    Color cursorColor = Colors.black,
    bool autofocus = false,
    Color selectionColor
  }):super(
      controller: controller,
      focusNode: NoKeyboardEditableTextFocusNode(),
      style: style,
      cursorColor: cursorColor,
      autofocus: autofocus,
      selectionColor: selectionColor,
      backgroundCursorColor: Colors.black
  );

  @override
  EditableTextState createState() {
    return NoKeyboardEditableTextState();
  }

}

class NoKeyboardEditableTextState extends EditableTextState {

  @override
  Widget build(BuildContext context) {
    Widget widget = super.build(context);
    return Container(
      decoration: UnderlineTabIndicator(borderSide: BorderSide(color: Colors.blueGrey)),
      child: widget,
    );
  }

  @override
  void requestKeyboard() {
    super.requestKeyboard();
    //hide keyboard
    SystemChannels.textInput.invokeMethod('TextInput.hide');
  }
}

class NoKeyboardEditableTextFocusNode extends FocusNode {
  @override
  bool consumeKeyboardToken() {
    // prevents keyboard from showing on first focus
    return false;
  }
}
0
ответ дан Andrey Turkovsky 19 March 2019 в 07:36
поделиться

Вы можете использовать пользовательский focusNode

. Это предотвращает появление клавиатуры только при первом касании:

TextField(focusNode: FirstDisabledFocusNode(),)

class FirstDisabledFocusNode extends FocusNode {
  @override
  bool consumeKeyboardToken() {
    return false;
  }
}

. Это предотвращает всегда:

TextField(focusNode: AlwaysDisabledFocusNode())

class AlwaysDisabledFocusNode extends FocusNode {
  @override
  bool get hasFocus => false;
}
.
0
ответ дан 19 March 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: