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"))
],
)