【问题标题】:white space is not removing from string in flutter空白没有从颤动的字符串中删除
【发布时间】:2019-09-30 06:26:38
【问题描述】:

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

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

【问题讨论】:

  • trim() 方法只删除前导和尾随空格。要删除所有空格,您可以使用正则表达式,请参阅stackoverflow.com/questions/51508321/…
  • 是的,我只想删除尾随空格
  • 当我添加电子邮件时,我添加了单个空格,然后验证变为真,它将显示无效电子邮件的错误。那是我使用修剪方法从轨迹中删除空间,但它不起作用
  • onSaved 事件仅在您执行form.save() 时调用。如果您想在提交表单之前验证值,只需通过这种方式将值传递给您的验证器:validator: (val) => Validators().validateEmail(val.trim()) 并更新您的 validateEmail 以接受参数。
  • 只删除尾随空格使用trimRight()函数

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


【解决方案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,
),

【讨论】:

  • 此 RegExp 充分检查所提供(即输入)电子邮件字符串中的空格。我竖起两个大拇指!
  • ? 我想我是从这个社区回答中得到的:stackoverflow.com/a/46181/1274485
猜你喜欢
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多