Cambiar el método enterText para mover el cursor al final del texto de entrada
WidgetTester.enterText y TestTextInput.enterText ahora mueven el cursor al final del texto de entrada.
Resumen
#Los métodos WidgetTester.enterText y TestTextInput.enterText
ahora mueven el cursor al final del texto de entrada.
Contexto
#El cursor indica el punto de inserción dentro del texto actual en un campo de entrada activo. Típicamente, cuando se introduce un nuevo carácter, el cursor se sitúa inmediatamente después de este. En Flutter, la posición del cursor se representa mediante una selección colapsada. Cuando la selección no es válida, normalmente el usuario no podrá modificar o añadir texto hasta que cambie la selección a un valor válido.
WidgetTester.enterText y TestTextInput.enterText son 2 métodos
utilizados en pruebas para reemplazar el contenido del campo de texto de destino. Antes
de este cambio, WidgetTester.enterText y TestTextInput.enterText
configuraban la selección en un rango no válido (-1, -1), indicando que
no había selección ni cursor. Esto contradice el comportamiento típico de un
campo de entrada.
Descripción del cambio
#Además de reemplazar el texto con el texto suministrado,
WidgetTester.enterText y TestTextInput.enterText ahora establecen la
selección en TextSelection.collapsed(offset: text.length), en lugar
de TextSelection.collapsed(offset: -1).
Guía de migración
#Debería ser muy poco común que las pruebas tengan que depender del
comportamiento anterior de enterText, ya que normalmente la selección
no debería ser inválida. Considera cambiar los valores esperados de
tus pruebas para adoptar el cambio de enterText.
Los fallos de prueba comunes que este cambio puede introducir incluyen:
-
Fallos en pruebas golden:
El cursor aparece al final del texto, a diferencia de antes del texto antes del cambio.
-
Diferente
TextEditingValue.selectiondespués de llamar aenterText:El
TextEditingValuedel campo de texto ahora tiene una selección colapsada con un offset no negativo, a diferencia deTextSelection.collapsed(offset: -1)antes del cambio. Por ejemplo, podrías verexpect(controller.value.selection.baseOffset, -1);fallando después de las llamadas aenterText.
Si tus pruebas tienen que depender de establecer la selección como no válida,
el comportamiento anterior se puede lograr usando updateEditingValue:
TestTextInput.enterText
#
Código antes de la migración:
await testTextInput.enterText(text);
Código después de la migración:
await testTextInput.updateEditingValue(TextEditingValue(
text: text,
));
WidgetTester.enterText
#
Código antes de la migración:
await tester.enterText(finder, text);
Código después de la migración:
await tester.showKeyboard(finder);
await tester.updateEditingValue(TextEditingValue(
text: text,
));
await tester.idle();
Timeline
#Lanzado en la versión: 2.1.0-13.0.pre
En versión estable: 2.5
Referencias
#Documentación de la API:
Issues relevantes:
PR relevante:
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-05. Ver código fuente oreportar un problema.