web-dev-qa-db-ja.com

Flutterでテキストフィールド間でフォーカスを変更する

2つのtextFormFieldウィジェットがあります。ユーザーが最初のtextFieldを競ったら、次のtextFieldに焦点を合わせたいと思います。 Flutterでこれを行う方法はありますか?現在、完了ボタンはキーボードを閉じるだけです。私はfocusNodeクラスがこれに対する答えかもしれないと推測していましたが、それがどのように機能するのかは確かではありませんが、誰もfocusNodeクラスの良い例を持っていますか?前もって感謝します。

10
Caleb Hatcher

はい、 FocusNodeTextFormField からのonFieldSubmittedがおそらく道です。

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

以下に役立つ例を示します。

_    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
_

また、onFieldSubmittedではなくボタンからFocusScope.of()をトリガーすることもできますが、上記の例で、ユースケースに適したソリューションを構築するのに十分なコンテキストが得られることを願っています。

23
Ashton Thomas

Androidのような同様の方法があります。

追加

textInputAction

パラメータをTextFormFieldウィジェットに追加し、プロパティを次のように追加します。

 TextInputAction.next
1