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 TextFormFieldanstelle von TextFieldund die initialValueEigenschaft 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
textEigenschaft gemäß den Dokumenten der TextEditingController.textEigenschaft 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 TextInputs 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 TextInputund geben Sie dort ihren Anfangswert wie folgt ein:
controller: initialValue('Some initial value here....')
Sie können dies für die anderen TextInputs 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 initialValueEigenschaft. Was dies im Grunde initialValueautomatisch 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."
),
...