web-dev-qa-db-fra.com

Changer le focus d'un champ de texte à l'autre dans Flutter

J'ai deux widgets textFormField. Une fois que l'utilisateur a participé au premier champ de texte, je voudrais concentrer le prochain champ de texte. Existe-t-il un moyen de le faire à Flutter? Actuellement, le bouton terminé ne fait que fermer le clavier. Je devinais que la classe focusNode pourrait être la réponse à cela, mais je ne sais pas vraiment comment cela fonctionne. Quelqu'un a-t-il de bons exemples de classe focusNode? Merci d'avance.

10
Caleb Hatcher

Oui, FocusNode et le onFieldSubmitted d'un TextFormField sont probablement la voie à suivre.

FocusScope.of (contexte) .requestFocus (focusNode);

Voici un exemple qui peut vous aider:

    FocusNode textSecondFocusNode = new FocusNode();

    TextFormField textFirst = new TextFormField(
      onFieldSubmitted: (String value) {
        FocusScope.of(context).requestFocus(textSecondFocusNode);
      },
    );

    TextFormField textSecond = new TextFormField(
      focusNode: textSecondFocusNode,
    );

    // render textFirst and textSecond where you want

Vous pouvez également vouloir déclencher FocusScope.of() à partir d'un bouton plutôt que sur onFieldSubmitted, mais nous espérons que l'exemple ci-dessus vous donne suffisamment de contexte pour construire une solution appropriée pour votre cas d'utilisation.

23
Ashton Thomas

Il existe une méthode similaire à celle d'Android.

Ajouter

textInputAction

paramètre au widget TextFormField, puis ajoutez la propriété en tant que;

 TextInputAction.next
1
Manoj Perumarath