GOOGLE ADS

dimanche 24 avril 2022

Comment supprimer l'événement d'appui sur la touche Retour arrière dans Textfield dans Flutter (Web) ?

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é RawKeyboardListeneret 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 TextControllerpour 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

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique&nbsp;?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...