Flutter 仅允许小写,无空格输入文本字段抖动

Flutter 仅允许小写,无空格输入文本字段抖动,flutter,flutter-layout,Flutter,Flutter Layout,因此,我正在制作一个聊天应用程序,我希望用户提交的用户名不应为大写且有空格,我可以接受该名称,稍后在onchanged feature中进行更改,但我希望用户也知道该名称。关于更改文本,请尝试执行以下操作: 假设“s”是用户名: String s = "" onChange(val) { s = val.trim().toLowerCase() } 如果要通知用户,可以使用带有文本的警报对话框,让他们知道用户名不应为大写且不包含空格。无论如何,你不能假设用户会遵守他们“应该做的” 您可以

因此,我正在制作一个聊天应用程序,我希望用户提交的用户名不应为大写且有空格,我可以接受该名称,稍后在onchanged feature中进行更改,但我希望用户也知道该名称。关于更改文本,请尝试执行以下操作:

假设“s”是用户名:

String s = ""
onChange(val) {
  s = val.trim().toLowerCase()
}


如果要通知用户,可以使用带有文本的警报对话框,让他们知道用户名不应为大写且不包含空格。无论如何,你不能假设用户会遵守他们“应该做的”

您可以使用
表单
,然后使用错误字段(验证器)通知用户


flatter的
TextField
TextFormField
具有名为
inputFormatters
的属性,该属性包含
TextInputFormatter
的列表

在您的案例中有用的
TextInputFormatters
示例

filteringtemputFormatter.allow(RegExp(“[a-z]”))

TextField(
输入格式化程序:[
FilteringPutFormatter.allow(RegExp(“[a-z]”)),
],
)
您可以在此处查看
TextInputFormatters
API文档:


(颤振前1.20):

whitelistingdeputFormatter(RegExp(“[a-z]”)),

TextField(
输入格式化程序:[
WhiteListingPutFormatter(RegExp(“[a-z]”)),
],
)
如果不够清楚,您可以将其作为参考:


还可以查看此SOF问题:

注释:使用
过滤器外部计算机格式化程序。允许
而不是
白名单外部计算机格式化程序
。因为此功能在v1.20.0-1.0.pre之后被弃用
FilteringPutFormatter
。allow是一种类型模式,
 下面是如何使用它

TextField(
  inputFormatters: [
  // is able to enter lowercase letters
   FilteringTextInputFormatter.allow(RegExp("[a-z]")),
  ],
)

这意味着用户输入的任何文本都应该是小写的

非常感谢@Saifallak,即使我搜索的内容完全不同。但有一个提示:“WhiteListingDeputFormatter”已被弃用,不应使用。请改用FilteringTemperatter.allow。此功能在v1.20.0-1.0.pre之后被弃用。@Jakob Kühne,感谢您的更正,我将更新我的答案供未来的观众使用!
TextField(
  inputFormatters: [
  // is able to enter lowercase letters
   FilteringTextInputFormatter.allow(RegExp("[a-z]")),
  ],
)