我正在创建一个电子邮件字段,我想避免或自动删除其中的前导空格和尾随空格。
我尝试使用
myTextFieldController.addListener(() { myTextFieldController.text = myTextFieldController.text.trim(); });
但是一旦用户键入任何字符,它就会将光标移动到开头。
还有其他办法吗?
您认识用户,所以我需要将其删除,否则他们将永远留在那里尝试验证该字段。
当然我知道我可以在验证之前做到这一点,但我想知道是否有更强大的方法。
您可以使用
inputFormatters
的 TextField
属性。
它不允许用户在文本字段中添加空格。
TextField(
inputFormatters: [
BlacklistingTextInputFormatter(RegExp('[ ]')),
]
);
更新: 对于 1.20.* 以上的 flutter 版本,请改用此
TextField(
inputFormatters: [
FilteringTextInputFormatter.deny(RegExp('[ ]')),
]
);
如果您同意用户在这些空格中输入内容,但只是不想将它们传递给您的处理方法,您可以使用
validator
向用户显示错误消息(“无前导/尾随”)允许空格')或者您可以在处理之前从结果字符串中删除它。如果您想采用验证器方法,也可以使用 Regex
表达式来验证电子邮件。您可以使用 inputFormatter
禁用空格,但请记住,这将禁用 TextField
中的所有空格,这对于电子邮件字段来说不应该是问题,但可能会在其他地方(姓名字段、地址字段)引起问题等)
TextField(
controller: yourTextController,
inputFormatters: [
FilteringTextInputFormatter.deny(RegExp(r'^\s+|\s+$')),
],
)
TextField(
controller: yourTextController,
inputFormatters: [
FilteringTextInputFormatter.deny(RegExp(r'^\s+')),
],
)