I'd ingin memberikan nilai awal untuk bidang teks dan redraw itu dengan nilai kosong untuk menghapus teks. Apa's pendekatan yang terbaik untuk melakukan itu dengan Bergetar's Api?
(Dari milis. Aku't datang dengan jawaban ini.)
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'),
),
],
);
}
}
Anda dapat menggunakan TextFormField
bukan TextField
, dan menggunakan initialValue
properti. misalnya
TextFormField(initialValue: "I am smart")
Jika anda menggunakan TextEditingController kemudian mengatur teks seperti di bawah ini
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
dan jika anda tidak menggunakan TextEditingController maka anda dapat langsung menggunakan initialValue seperti di bawah ini
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
Untuk lebih lanjut referensi TextEditingController
Jika anda ingin menangani beberapa TextInput ini seperti yang diminta oleh @MRT di komentar dengan jawaban yang diterima, anda dapat membuat fungsi yang mengambil nilai awal dan kembali
TextEditingController` seperti ini:
initialValue(val) {
return TextEditingController(text: val);
}
Kemudian, set ini berfungsi sebagai controller untuk TextInput
dan pasokan nilai awal ada seperti ini:
controller: initialValue('Some initial value here....')
Anda bisa mengulang ini untuk yang lain `TextInput ini.
Hal ini dapat dicapai dengan menggunakan TextEditingController
TextEditingController _controller = TextEditingController(teks: 'nilai awal'); atau Jika anda menggunakan TextFormField anda memiliki initialValue properti di sana. Yang pada dasarnya menyediakan ini initialValue ke controller secara otomatis.
TextEditingController _controller = TextEditingController();
TextFormField(
controller: _controller,
initialValue: 'nilai awal'
)
2. Untuk menghapus teks anda dapat menggunakan
_controller.jelas()
metode
Jika anda belum't menemukan jawaban untuk ini dan untuk orang-orang yang datang ke sini mencari jawaban: Checkout InputDecoration
field's hintText:
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...