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