格式化程序
在服务库中,您将找到
TextInputFormatter抽象
类(这意味着您必须导入
package:flutter/services.dart)。
它已经有两个实现,分别是
BlacklistingTextInputFormatter和
WhitelistingTextInputFormatter。
如果要实现自己的格式化程序,可以扩展
TextInputFormatter自身并
formatEditUpdate在其中实现。
我将展示如何在给定的上下文中应用两个预制的格式化程序。
例子
禁止
和/
为此,我们将使用
BlacklistingTextInputFormatter:
TextField(inputFormatters: [ BlacklistingTextInputFormatter(RegExp("[/\\]")), ])对于
Pattern需要提供给格式化程序的,我将使用
RegExp,即正则表达式。您可以在此处找到有关此内容的更多信息,还将您链接到我将在示例中使用的功能。
薪酬 关注
的四倍反斜杠
\\。这实际上只代表一个反斜线。这样做的原因是,在Dart中,反斜杠是转义键,而双反斜杠则表示一个单反斜杠,并且对于
RegExp,反斜杠也是转义键。
所以,如果我们要阻止
a,
b,
F,
!和
.,我们也会把它放在一个列表
[...]如下:
BlacklistingTextInputFormatter(RegExp("[abF!.]"))这表示“ 将所有’a’,’b’,’F’,’! 和“。” ”。
只允许
a对Z
这次我们使用
WhitelistingTextInputFormatter:
TextField(inputFormatters: [ WhitelistingTextInputFormatter(RegExp("[a-zA-Z]")), ])为此,我们指定了两个字符范围:
a-z和
A-Z,它们还将接受指定的两个字符之间的所有字符(此处为所有字母)。这也将工作的
0-9,你可以添加任何字符到该列表,例如
a-zA-Z0-9!.也将采取
!和
.考虑。
我们可以结合起来
TextField(inputFormatters: [ WhitelistingTextInputFormatter(RegExp("[a-zA-Z]")), BlacklistingTextInputFormatter(RegExp("[abFeG]")), ])这仅表明
inputFormatters需要一个
List<InputFormatter>。实际上,您应该使用一个白名单和一个正则表达式来解决此问题,但这也可以正常工作。



