как обрезать пробелы в текстовом поле флаттера? - PullRequest
0 голосов
/ 16 июня 2020

Я использую приведенный ниже код для поля электронной почты вместе с валидатором электронной почты в приложении flutter, которое работает нормально до тех пор, пока пользователь не предоставит пробел после ввода электронной почты в текстовое поле, которое я не могу обрезать с помощью .trim(), как мне обрезать пробелы, если их ввел пользователь?

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

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Как насчет того, чтобы предотвратить ввод пробелов, вводимых пользователем, с помощью inputFormatters и BlacklistingTextInputFormatter?

TextFormField(
                validator: _validateInput,
                inputFormatters: [BlacklistingTextInputFormatter(
                    new RegExp(r"\s\b|\b\s")
                )],
                ...
0 голосов
/ 16 июня 2020

вы должны использовать inputFormatter и не допускать пробелов.

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