Jawaban:
(Dari milis. Saya tidak menemukan 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
alih - alih TextField
, dan menggunakan initialValue
properti. sebagai contoh
TextFormField(initialValue: "I am smart")
Anda tidak perlu mendefinisikan variabel terpisah dalam cakupan widget, cukup lakukan inline:
TextField(
controller: TextEditingController()..text = 'Your initial value',
onChanged: (text) => {},
)
Jika Anda menggunakan TextEditingController maka atur teksnya, 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 referensi TextEditingController lebih lanjut
text
properti sesuai dokumen TextEditingController.text
properti: Mengatur ini akan memberi tahu semua pendengar TextEditingController ini yang mereka perlu perbarui (ini disebut notifyListeners). Karena alasan ini, nilai ini hanya boleh ditetapkan di antara frame, misalnya sebagai respons terhadap tindakan pengguna, bukan selama fase pembuatan, tata letak, atau cat. ( api.flutter.dev/flutter/widgets/TextEditingController/text.html )
Jika Anda ingin menangani beberapa TextInput
s seperti yang diminta oleh @MRT dalam komentar untuk jawaban yang diterima, Anda dapat membuat fungsi yang mengambil nilai awal dan mengembalikan yang TextEditingController
seperti ini:
initialValue(val) {
return TextEditingController(text: val);
}
Kemudian, atur fungsi ini sebagai pengontrol untuk TextInput
dan berikan nilai awalnya di sana seperti ini:
controller: initialValue('Some initial value here....')
Anda dapat mengulangi ini untuk yang lain TextInput
.
Ini bisa dicapai dengan menggunakan TextEditingController
.
Untuk memiliki nilai awal, Anda dapat menambahkan
TextEditingController _controller = TextEditingController(text: 'initial value');
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: 'initial value'
)
Untuk menghapus teks, Anda dapat menggunakan
_controller.clear()
metode.
di dalam kelas,
final usernameController = TextEditingController(text: 'bhanuka');
TextField,
child: new TextField(
controller: usernameController,
...
)
TextEdittingController _controller = new TextEdittingController(text: "your Text");
atau
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
Jika Anda belum menemukan jawaban untuk ini dan bagi mereka yang datang ke sini mencari jawaban: Periksa petunjuk InputDecoration
bidangTeks:
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...