颤振 不允许在文本字段中使用前导空格



我有一个简单的TextField,其中不允许用户键入前导空格。我发现了一些关于从Strings中删除空白或不允许任何空白的类似答案。但在我的情况下,唯一的限制应该是领先的空白。

这是我在TextFields中发现的,但它删除了所有空白。

有人能帮我吗?

创建自己的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演示。

详细信息

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

您可以使用trimRight()方法:

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

作为trim,但仅删除尾部空白。

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

相关内容

  • 没有找到相关文章

最新更新