颤振中的字符串未删除空格

时间:2019-09-30 06:26:38

标签: validation flutter error-handling flutter-layout trim

我对修剪功能有疑问。当我使用修剪时,它不起作用。当我添加空格,然后使用修剪功能,但我的验证仍然是正确的。而不是修剪必须删除所有空白。希望你理解这个问题。预先谢谢你。

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

1 个答案:

答案 0 :(得分:1)

仅在保存表单(调用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,
),