web-dev-qa-db-fra.com

Comment modifiez-vous la valeur à l'intérieur d'un flutter de champ de texte?

J'ai un TextEditingController où, si un utilisateur clique sur un bouton, il contient des informations. Je n'arrive pas à comprendre comment changer le texte à l'intérieur d'un Textfield ou TextFormField. Y a-t-il une solution?

25
Daniel

Changez simplement la propriété text

    TextField(
      controller: txt,
    ),
    RaisedButton(onPressed: () {
        txt.text = "My Stringt";
    }),

tandis que txt est juste un TextEditingController

  var txt = TextEditingController();
37
Raouf Rahiche
_mytexteditingcontroller.value = new TextEditingController.fromValue(new TextEditingValue(text: "My String")).value;

Cela semble fonctionner si quelqu'un a une meilleure solution, n'hésitez pas à me le faire savoir.

6
Daniel

Vous pouvez utiliser le contrôleur d'édition de texte pour manipuler la valeur dans un champ de texte.

var textController = new TextEditingController();

Créez maintenant un nouveau champ de texte et définissez textController comme contrôleur du champ de texte, comme indiqué ci-dessous.

 new TextField(controller: textController)

Créez maintenant une RaisedButton n’importe où dans votre code et définissez le texte souhaité dans la méthode onPressed de la RaisedButton.

new RaisedButton(
       onPressed: () {
          setState(() {
             textController.text = "New text";
          });
       }
    ),
4
Chaythanya nair

En utilisant cette solution, vous pourrez aussi mettre le curseur à la fin du nouveau texte.

final TextEditingController _controller = TextEditingController();

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(child: TextField(controller: _controller)),
    floatingActionButton: FloatingActionButton(
      onPressed: () {
        _controller.text = "Hello";

        // this changes cursor position
        _controller.selection = TextSelection.fromPosition(TextPosition(offset: _controller.text.length));
        setState(() {});
      },
    ),
  );
}
1
CopsOnRoad