Antworten:
(Aus der Mailingliste. Ich habe diese Antwort nicht gefunden.)
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'),
),
],
);
}
}
Sie können ein TextFormField
anstelle von TextField
und die initialValue
Eigenschaft verwenden. beispielsweise
TextFormField(initialValue: "I am smart")
Sie müssen keine separate Variable im Widget-Bereich definieren, sondern nur inline:
TextField(
controller: TextEditingController()..text = 'Your initial value',
onChanged: (text) => {},
)
Wenn Sie TextEditingController verwenden, setzen Sie den Text wie unten beschrieben darauf
TextEditingController _controller = new TextEditingController();
_controller.text = 'your initial text';
final your_text_name = TextFormField(
autofocus: false,
controller: _controller,
decoration: InputDecoration(
hintText: 'Hint Value',
),
);
Wenn Sie keinen TextEditingController verwenden , können Sie initialValue wie unten beschrieben direkt verwenden
final last_name = TextFormField(
autofocus: false,
initialValue: 'your initial text',
decoration: InputDecoration(
hintText: 'Last Name',
),
);
Weitere Informationen finden Sie unter TextEditingController
text
Eigenschaft gemäß den Dokumenten der TextEditingController.text
Eigenschaft festzulegen: Wenn Sie dies festlegen, werden alle Listener dieses TextEditingControllers darüber informiert, dass sie aktualisiert werden müssen (es werden notifyListeners aufgerufen). Aus diesem Grund sollte dieser Wert nur zwischen Frames festgelegt werden, z. B. als Reaktion auf Benutzeraktionen, nicht während der Erstellungs-, Layout- oder Malphase. ( api.flutter.dev/flutter/widgets/TextEditingController/text.html )
Wenn Sie mehrere TextInput
s verarbeiten möchten, wie von @MRT im Kommentar zur akzeptierten Antwort gefordert, können Sie eine Funktion erstellen, die einen Anfangswert annimmt und Folgendes zurückgibt TextEditingController
:
initialValue(val) {
return TextEditingController(text: val);
}
Stellen Sie dann diese Funktion als Regler für ein TextInput
und geben Sie dort ihren Anfangswert wie folgt ein:
controller: initialValue('Some initial value here....')
Sie können dies für die anderen TextInput
s wiederholen .
innerhalb der Klasse,
final usernameController = TextEditingController(text: 'bhanuka');
Textfeld,
child: new TextField(
controller: usernameController,
...
)
TextEdittingController _controller = new TextEdittingController(text: "your Text");
oder
@override
void initState() {
super.initState();
_Controller.text = "Your Text";
}
Dies kann erreicht werden mit TextEditingController
.
Um einen Anfangswert zu haben, können Sie hinzufügen
TextEditingController _controller = TextEditingController(text: 'initial value');
oder
Wenn Sie verwenden TextFormField
, haben Sie dort eine initialValue
Eigenschaft. Was dies im Grunde initialValue
automatisch an die Steuerung liefert .
TextEditingController _controller = TextEditingController();
TextFormField(
controller: _controller,
initialValue: 'initial value'
)
Um den Text zu löschen, können Sie die
_controller.clear()
Methode verwenden.
Wenn Sie die Antwort darauf und für diejenigen, die hierher kommen und nach einer Antwort suchen, nicht gefunden haben: InputDecoration
Überprüfen Sie den Hinweis des FeldesText:
new TextField(
decoration: new InputDecoration(
hintText:"My Text String."
),
...