1
votes

Comment couper les espaces dans le champ de texte du flutter?

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,
    );


0 commentaires

3 Réponses :


-1
votes

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


1 commentaires

merci, mais je ne peux pas entrer les symboles comme @, _,. , que faut-il faire pour la même chose?



3
votes

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


0 commentaires

2
votes

Pour Flutter 1.20.0 et supérieur:

TextFormField(
              validator: (value),
              inputFormatters: [
                FilteringTextInputFormatter.deny(new RegExp(r"\s\b|\b\s"))
              ],
)


0 commentaires