Yanıtlar:
(Posta listesinden. Bu cevabı ben bulmadım.)
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'),
),
],
);
}
}
Bunun TextFormField
yerine a TextField
kullanabilir ve initialValue
özelliği kullanabilirsiniz . Örneğin
TextFormField(initialValue: "I am smart")
Widget kapsamında ayrı bir değişken tanımlamanız gerekmez, sadece satır içi yapın:
TextField(
controller: TextEditingController()..text = 'Your initial value',
onChanged: (text) => {},
)
TextEditingController kullanıyorsanız , aşağıdaki gibi metni ona ayarlayın
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
ve herhangi bir TextEditingController kullanmıyorsanız , aşağıdaki gibi initialValue'yu doğrudan kullanabilirsiniz.
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
Daha fazla referans için TextEditingController
text
Özellik belgelerine göre ilk değeri özelliğe ayarlamanın iyi bir fikir olup olmadığından emin değilim TextEditingController.text
: Bunu ayarlamak, bu TextEditingController'ın tüm dinleyicilerini güncellemeleri gerektiği konusunda bilgilendirir (notifyListeners'ı çağırır). Bu nedenle, bu değer yalnızca çerçeveler arasında ayarlanmalıdır; örneğin, kullanıcı eylemlerine yanıt olarak; oluşturma, yerleşim veya boyama aşamaları sırasında değil. ( api.flutter.dev/flutter/widgets/TextEditingController/text.html )
TextInput
Kabul edilen cevaba yönelik yorumda @MRT tarafından sorulan birden çok s ile işlem yapmak istiyorsanız, bir başlangıç değeri alan ve şuna TextEditingController
benzer bir döndüren bir işlev oluşturabilirsiniz :
initialValue(val) {
return TextEditingController(text: val);
}
Ardından, bu işlevi denetleyici olarak ayarlayın TextInput
ve başlangıç değerini şu şekilde sağlayın:
controller: initialValue('Some initial value here....')
Bunu diğer TextInput
e- postalar için tekrarlayabilirsiniz .
Bu kullanılarak elde edilebilir TextEditingController
.
Bir başlangıç değerine sahip olmak için ekleyebilirsiniz
TextEditingController _controller = TextEditingController(text: 'initial value');
veya
Eğer kullanıyorsanız orada TextFormField
bir initialValue
mülkünüz var. Temelde bunu initialValue
denetleyiciye otomatik olarak sağlar.
TextEditingController _controller = TextEditingController();
TextFormField(
controller: _controller,
initialValue: 'initial value'
)
Metni temizlemek için _controller.clear()
yöntemi kullanabilirsiniz
.
TextEdittingController _controller = new TextEdittingController(text: "your Text");
veya
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
Bunun cevabını bulamadıysanız ve buraya bir cevap arayanlar için: InputDecoration
Alanın hintText'ine bakın:
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...