J'utilise le code ci-dessous pour le champ d'e-mail avec le validateur d'e-mail dans l'application Flutter, qui fonctionne bien jusqu'à ce que l'utilisateur donne l'espace après avoir entré l'e-mail dans le champ de texte, que je ne peux pas couper en utilisant .trim () , comment dois-je couper l'espace blanc si l'utilisateur l'aurait saisi?
String emailValidator(String value) { Pattern pattern = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$'; RegExp regex = new RegExp(pattern); if (!regex.hasMatch(value)) { return 'Email format is invalid'; } else { return null; } } final email = TextFormField( decoration: InputDecoration( labelText: "Email", labelStyle: TextStyle(color: Colors.black), prefixIcon: Icon( LineIcons.envelope, color: Colors.black38, ), enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.black38), ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.orange), ), ), keyboardType: TextInputType.text, style: TextStyle(color: Colors.black), cursorColor: Colors.black, controller: emailInputController, validator: emailValidator, );
3 Réponses :
vous devez utiliser inputFormatter
et n'autoriser aucun espace blanc.
TextFormField( decoration: InputDecoration( labelText: "Email", labelStyle: TextStyle(color: Colors.black), prefixIcon: Icon( LineIcons.envelope, color: Colors.black38, ), enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.black38), ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.orange), ), ), keyboardType: TextInputType.text, style: TextStyle(color: Colors.black), cursorColor: Colors.black, controller: emailInputController, validator: emailValidator, inputFormatters: [WhitelistingTextInputFormatter(RegExp(r'[a-zA-Z0-9]'))], )
merci, mais je ne peux pas entrer les symboles comme @, _,.
, que faut-il faire pour la même chose?
Que diriez-vous d'empêcher les espaces blancs de saisie utilisateur en utilisant 'inputFormatters et BlacklistingTextInputFormatter'?
TextFormField( validator: _validateInput, inputFormatters: [BlacklistingTextInputFormatter( new RegExp(r"\s\b|\b\s") )], ...
Pour Flutter 1.20.0 et supérieur:
TextFormField( validator: (value), inputFormatters: [ FilteringTextInputFormatter.deny(new RegExp(r"\s\b|\b\s")) ], )