webentwicklung-frage-antwort-db.com.de

Wie gebe ich einem Textfeld einen Anfangswert an?

Ich möchte einen Anfangswert für ein Textfeld angeben und es mit einem leeren Wert neu zeichnen, um den Text zu löschen. Was ist der beste Ansatz, um dies mit den APIs von Flutter zu erreichen?

30
Seth Ladd

(Von 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'),
        ),
      ],
    );
  }
}
41
Seth Ladd

Sie können anstelle von TextFormField eine TextField und die initialValue-Eigenschaft verwenden. zum Beispiel

TextFormField(initialValue: "I am smart")
15
Sami Kanafani

Wenn Sie TextEditingController verwenden, legen Sie den Text wie folgt fest

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 direkt wie folgt verwenden

final last_name = TextFormField(
      autofocus: false,
      initialValue: 'your initial text',
      decoration: InputDecoration(
        hintText: 'Last Name',
      ),
    );

Für weitere Informationen TextEditingController

8
Nirav Bhavsar

Wenn Sie mehrere TextInputs behandeln möchten, wie von @MRT im Kommentar zur akzeptierten Antwort verlangt, können Sie eine Funktion erstellen, die einen Anfangswert annimmt und ein TextEditingController-Objekt wie folgt zurückgibt: 

initialValue(val) {
  return TextEditingController(text: val);
}

Stellen Sie dann diese Funktion als Controller für TextInput ein und geben Sie ihren Anfangswert wie folgt an:

controller: initialValue('Some initial value here....')

Sie können dies für die anderen TextInputs wiederholen.

2
Muaad

in der Klasse,

  final usernameController = TextEditingController(text: 'bhanuka');

Textfeld,

   child: new TextField(
        controller: usernameController,
    ...
)
0
BloodLoss