空格未从字符串中移出

问题描述 投票:0回答:1

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

 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(),
      ),
    );
  }
validation flutter error-handling flutter-layout trim
1个回答
0
投票

仅当您保存表单(调用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.isValidEmail(val.trimRight()),
  onSaved: (val) => _currMember.email = val,
  initialValue: _currMember.email,
),
© www.soinside.com 2019 - 2024. All rights reserved.