Как изменить значение внутри флаттера текстового поля?

У меня есть TextEditingController, где, если пользователь нажимает кнопку, он заполняется информацией. Я не могу понять, как изменить текст внутри Textfield или TextFormField. Есть ли решение?

26
задан CopsOnRoad 27 July 2019 в 15:06
поделиться

2 ответа

Проблема только с установкой

_controller.text = "New value";

состоит в том, что курсор будет изменен местоположение к началу (в TextField материала). Используя

_controller.text = "Hello";
_controller.selection = TextSelection.fromPosition(
    TextPosition(offset: _controller.text.length),
);
setState(() {});

не эффективно, так как это восстанавливает виджет больше, чем это необходимо (при установке текстового свойства и при вызове setState).

-

я полагаю, что лучший способ состоит в том, чтобы объединить все в одну простую команду:

final _newValue = "New value";
_controller.value = TextEditingValue(
      text: _newValue,
      selection: TextSelection.fromPosition(
        TextPosition(offset: _newValue.length),
      ),
    );

Это работает правильно и на Текстовые поля Материала и на Купертино.

2
ответ дан 27 November 2019 в 18:07
поделиться

Первая Вещь

  TextEditingController MyController= new TextEditingController();

Тогда добавляет его к init состоянию или в любом SetState

    MyController.value = TextEditingValue(text: "ANY TEXT");
1
ответ дан 27 November 2019 в 18:07
поделиться
Другие вопросы по тегам:

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