如何解决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 举报,一经查实,本站将立刻删除。