首页 > 解决方案 > 空白没有从颤动的字符串中删除

问题描述

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

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

标签: validationfluttererror-handlingflutter-layouttrim

解决方案


仅当您保存表单时才会调用该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,
),

推荐阅读