白色 space 没有从 flutter 中的字符串中删除

white space is not removing from string in flutter

我对 trim 函数有疑问。当我使用 trim 时,它不起作用。当我添加白色 space 然后使用 trim 函数时,但我的验证仍然是正确的。而不是 trim 必须删除所有白色 space。希望你理解这个问题。提前谢谢你。

 Widget _buildUserNameField() {
    return EnsureVisibleWhenFocused(
      focusNode: _emailFocusNode,
      child: TudoEmailWidget(
        focusNode: _emailFocusNode,
        prefixIcon: Icon(Icons.email),
        labelText: AppConstantsValue.appConst['login']['email']['translation'],
        validator: Validators().validateEmail,
        onSaved: (val) => _username = val.trim(),
      ),
    );
  }

onSaved 事件仅在您保存表单时调用(调用 form.save())。

如果您想在提交表单之前验证该值,只需以这种方式将值传递给您的验证器即可:

validator: (val) => Validators().validateEmail(val)

并更新您的 validateEmail 以接受参数。

此外,如果您只想删除尾随空格,请使用 trimRight() 函数。

举个例子,这对我来说非常有效:

class Validators {
  static String validateEmail(String value) {
    String 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 regExp = new RegExp(pattern);
    if (value == null || value.length <= 0) {
      return "Email is Required";
    } else if (!regExp.hasMatch(value)) {
      return "Invalid Email";
    } else {
      return null;
    }
  }
}
TextFormField(
  maxLines: 1,
  inputFormatters: [LengthLimitingTextInputFormatter(128)],
  validator: (val) => Validators.validateEmail(val.trimRight()),
  onSaved: (val) => _currMember.email = val,
  initialValue: _currMember.email,
),