enterText メソッドを変更して、キャレットを入力テキストの末尾に移動します。
まとめ
のWidgetTester.enterText
とTestTextInput.enterText
メソッド
次に、キャレットを入力テキストの末尾に移動します。
コンテクスト
キャレットは、現在のテキスト内の挿入ポイントを示します。 アクティブな入力フィールド。通常、新しい文字が入力されると、 キャレットはその直後に残ります。 Flutter では、キャレットの位置は次のとおりです。 折りたたまれた選択範囲で表されます。選択が無効な場合は、 通常、ユーザーはテキストを変更したり追加したりすることはできません。 選択を有効な値に変更します。
WidgetTester.enterText
とTestTextInput.enterText
2つの方法があります
ターゲット テキスト フィールドの内容を置き換えるためにテストで使用されます。前
この変化に対して、WidgetTester.enterText
とTestTextInput.enterText
選択範囲を無効な範囲 (-1、-1) に設定し、
選択やキャレットはありません。これは、典型的な行動と矛盾します。
入力フィールド。
変更内容の説明
テキストを提供されたテキストに置き換えるだけでなく、WidgetTester.enterText
とTestTextInput.enterText
今すぐ設定してください
への選択TextSelection.collapsed(offset: text.length)
、 その代わり
のTextSelection.collapsed(offset: -1)
。
移行ガイド
テストが
以前の行動enterText
、通常は選択なので
無効であってはなりません。の期待値を変更することを検討してください。
を採用するためのテストenterText
変化。
この変更により発生する可能性のある一般的なテスト障害には次のものがあります。
-
ゴールデン テストの失敗:
以前とは異なり、キャレットがテキストの最後に表示されます。 変更前の本文です。
-
違う
TextEditingValue.selection
電話した後enterText
:テキストフィールドの
TextEditingValue
今は崩壊しています 負でないオフセットでの選択とは対照的に、TextSelection.collapsed(offset: -1)
変更前。 たとえば、次のようになります。expect(controller.value.selection.baseOffset, -1);
後で失敗するenterText
呼び出します。
テストで選択を無効に設定する必要がある場合は、
以前の動作は次を使用して実現できますupdateEditingValue
:
TestTextInput.enterText
移行前のコード:
await testTextInput.enterText(text);
移行後のコード:
await testTextInput.updateEditingValue(TextEditingValue(
text: text,
));
WidgetTester.enterText
移行前のコード:
await tester.enterText(finder, text);
移行後のコード:
await tester.showKeyboard(finder);
await tester.updateEditingValue(TextEditingValue(
text: text,
));
await tester.idle();
タイムライン
リリースされたバージョン: 2.1.0-13.0.pre
安定版リリース: 2.5
参考文献
API ドキュメント:
WidgetTester.enterText
TestTextInput.enterText
関連する問題:
- 問題 79494
関連する PR:
- EnterText でキャレットを最後に移動します