Я'd, как поставить начальное значение в текстовое поле и перерисовать его с пустым значением, чтобы очистить текст. Что's самый лучший подход, чтобы сделать это с флаттер'ы Апис?
(Из списка рассылки. Я не'т придумать этот ответ.)
class _FooState extends State<Foo> {
TextEditingController _controller;
@override
void initState() {
super.initState();
_controller = new TextEditingController(text: 'Initial value');
}
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
new TextField(
// The TextField is first built, the controller has some initial text,
// which the TextField shows. As the user edits, the text property of
// the controller is updated.
controller: _controller,
),
new RaisedButton(
onPressed: () {
// You can also use the controller to manipuate what is shown in the
// text field. For example, the clear() method removes all the text
// from the text field.
_controller.clear();
},
child: new Text('CLEAR'),
),
],
);
}
}
Вы можете использовать TextFormField
вместо поле
, и использовать initialValue имущества. например
TextFormField(initialValue: "I am smart")
если вы используете TextEditingController затем установить в него текст, как показано ниже
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
И если вы не используете TextEditingController затем вы можете напрямую использовать initialValue как ниже
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
дополнительные ссылки TextEditingController
Если вы хотите обрабатывать несколько TextInput с как просил @МРТ в комментарии принято отвечать, вы можете создать функцию, которая принимает начальное значение и возвращает `TextEditingController-то вроде этого:
initialValue(val) {
return TextEditingController(text: val);
}
Затем установите эту функцию в качестве контроллера для `текстовые поля и поставить там своего начального значения такой:
controller: initialValue('Some initial value here....')
Вы можете повторить это для других `TextInput в это.
TextEdittingController _controller = new TextEdittingController(text: "your Text");
или
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
Это может быть достигнуто с помощью TextEditingController
TextEditingController _controller = TextEditingController(текст: 'начальное значение'); или Если вы используете TextFormField у вас есть свойство initialValue там. Который в основном предоставляет эту initialValue на автоматически контроллер.
TextEditingController _controller = TextEditingController();
TextFormField(
контроллер: _controller,
initialValue: 'начальное значение'
)
2. Чтобы очистить текст, который вы можете использовать
_controller.методы Clear()
Если вы еще'т нашли ответа на этот вопрос и для тех, кто приехал сюда в поисках ответа: проверка InputDecoration
поле'ы hintText:
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...