微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter 不允许在 TextField 中使用前导空格

如何解决Flutter 不允许在 TextField 中使用前导空格

我有一个简单的 TextField,不允许用户输入前导空格。我找到了一些关于从 Strings删除空格或不允许任何空格的类似答案。但就我而言,唯一的限制应该是前导空格。

This 是我为 TextFields 找到的,但它删除了所有空格。

有人可以帮我吗?

解决方法

您可以使用 trimRight() 方法:

没有任何尾随空格的字符串。

作为 trim,但只删除尾随空格。

void main() {
 print('\t Space\t. Dart is fun\t\t'.trimRight()); // '  Space  . Dart is fun'
}
,

创建您自己的 TextInputFormatter 并更改 formatEditUpdate(...) 的返回值。

示例:

class NoLeadingSpaceFormatter extends TextInputFormatter {
  @override
  TextEditingValue formatEditUpdate(
    TextEditingValue oldValue,TextEditingValue newValue,) {
    if (newValue.text.startsWith(' ')) {
      final String trimedText = newValue.text.trimLeft();

      return TextEditingValue(
        text: trimedText,selection: TextSelection(
          baseOffset: trimedText.length,extentOffset: trimedText.length,),);
    }

    return newValue;
  }
}

用法:

TextField(
  inputFormatters: [
    NoLeadingSpaceFormatter(),],
,

没有前导空格正则表达式

^\S
^(?!\s)

在 Dart 中,不要忘记使用原始字符串文字,r"^\S"r"^(?!\s)"

参见regex demo

详情

  • ^\S - 字符串开头的任何非空白字符 (\S)
  • ^(?!\s) - 字符串的开头 (^) 位置,不能紧跟空格((?!\s) 是负前瞻)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。