Выделите весь текст внутри TextField, когда он получит фокус - PullRequest
0 голосов
/ 15 сентября 2018

Вкл. TextField foucus Я хочу выделить весь текст так, чтобы, когда пользователь начинает печатать, существующий текст удалялся.

Это будет альтернативой: android:selectAllOnFocus="true" в Android.

Как этого добиться?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

По состоянию на Дарт 2:

 controller1.selection = TextSelection(baseOffset:0, extentOffset:controller1.text.length);
0 голосов
/ 15 сентября 2018

Передача контроллера и focusNode явно, тогда у вас есть полный контроль:

final _controller = TextEditingController(); 
final _focusNode = FocusNode();

initState() {
  super.initState();
  _focusNode.addListener(() {
    if(_focusNode.hasFocus) {
      _controller.selection = TextSelection(baseOffset: 0, extentOffset: _controller.text.length);
    }
  });
}

build() => TextField(controller: _controller, focusNode: _focusNode);

Обновление с https://github.com/flutter/flutter/issues/28307#issuecomment-467952074 для предотвращения бесконечного цикла:

_controller.addListener(() {
  final newText = _controller.text.toLowerCase();
  _controller.value = _controller.value.copyWith(
    text: newText,
    selection: TextSelection(baseOffset: newText.length, extentOffset: newText.length),
    composing: TextRange.empty,
  );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...