Je crée une application Web Flutter. L'exigence est que, sous certaines conditions, je dois empêcher l'utilisateur d'appuyer sur la touche de retour arrière (ou la touche de suppression) lors de la saisie de texte dans Textfield. J'ai essayé RawKeyboardListener
et TextEditingController
. Ils m'aident à écouter les événements du clavier, mais je ne peux pas modifier ou supprimer les événements du clavier.
RawKeyboardListener(
focusNode: focusNode,
onKey: handleOnKeyEvent,
child: TextField(
textAlignVertical: TextAlignVertical.top,
textInputAction: TextInputAction.newline,
controller: textEditingController,
decoration: InputDecoration(
border: InputBorder.none, hintText: 'Start typing here'),
keyboardType: TextInputType.multiline,
minLines: null,
maxLines: null,
expands: true,
onChanged: (value) {
//print('text = $value');
handleUserInput(value);
},
),
),
Solution du problème
Que diriez-vous d'utiliser un TextController
pour vérifier si le texte a été reculé ?
De cette façon, l'utilisateur peut toujours saisir de nouveaux caractères mais ne peut pas les supprimer.
late String initialText;
late TextEditingController _textController;
void initState() {
initialText = "MyText";
_textController = TextEditingController(text: initialText);
super.initState();
}
et à l'intérieur du build()
:
TextFormField(
controller: _textController,
onChanged: (input) {
if (_textController.text.length < initialText.length) {
_textController.text = initialText;
} else {
setState(() {
initialText = _textController.text;
});
}
},
)
Aucun commentaire:
Enregistrer un commentaire