#flutter #dart #textfield
#flutter #dart #текстовое поле
Вопрос:
TextField(
inputFormatters: [
new FilteringTextInputFormatter.allow(
RegExp('[0-9]')),
],
hintText: 'some text'
title: '',
editingController: controllers[31],
value: somenumber,
onChange: (value) {
if (num.parse(value) <= 3000 amp;amp;
num.parse(value) >= 30) {
// save some data
}else{
controllers[31].clear(),
},
),
итак, выше приведено текстовое поле с onchange, прямо сейчас текстовое поле не очищается, если я помещаю вне диапазона, возможно ли очистить текстовое поле на основе onchange?
Ответ №1:
Является TextField()
ли используемое вами частью плагина? Свойства выглядят немного странно по сравнению с последней стабильной версией Flutter.
Вот пример, который очищает текст:
TextEditingController textEditingController = new TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
child: TextField(
inputFormatters: [
new FilteringTextInputFormatter.allow(RegExp('[0-9]')),
],
decoration: InputDecoration(
hintText: 'some text',
),
controller: textEditingController,
onChanged: (value) {
if (value.length <= 10) {
// something
} else {
textEditingController.clear();
}
}
),
),
);
}
Ответ №2:
Создайте TextEditingController для вашего текстового поля, а затем назначьте его свойству контроллера TextField .
// create controller
TextEditingController _controller = new TextEditingController();
// assign it to TextField controller property
TextField(
controller : _controller
// your other properties
)
затем, чтобы очистить текст
// clear text
_controller.clear();
``
Ответ №3:
Вы также можете сделать это :
TextEditingController textEditingController = new TextEditingController();
Function onchange;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Container(
child: TextField(
inputFormatters: [
new FilteringTextInputFormatter.allow(RegExp('[0-9]')),
],
decoration: InputDecoration(
hintText: 'some text',
suffixIcon: IconButton(
onPressed: () {
widget.onchanged('');
controller.clear();
},
),
controller: textEditingController,
onChanged: (value) => onchange(value)
}
),
),
);
}
Комментарии:
1. Ответ был бы более полезным, если бы вы могли добавить некоторое объяснение вместе с кодом.
2. метод OnChanged имеет строку параметров, мы передаем ему пустую строку, а затем я очистил текстовую форму с помощью controller.clear()