Le problème avec le simple fait de mettre
_controller.text = "New value";
est que le curseur sera repositionné au début (dans le champ de texte de l'article). Utilisation de
_controller.text = "Hello";
_controller.selection = TextSelection.fromPosition(
TextPosition(offset: _controller.text.length),
);
setState(() {});
n'est pas efficace car elle reconstruit le widget plus que nécessaire (lors de la définition de la propriété text et lors de l'appel à setState).
--
Je pense que le meilleur moyen est de tout combiner en une seule commande simple :
final _newValue = "New value";
_controller.value = TextEditingValue(
text: _newValue,
selection: TextSelection.fromPosition(
TextPosition(offset: _newValue.length),
),
);
Il fonctionne correctement pour les champs de texte Material et Cupertino.