我会强制只插入 1-20 之间的值。如果用户输入 2 没问题,但如果用户在 2 (21) 之后输入 1,则文本字段将不允许在 2 之后输入 1。是否有任何正则表达式。
我尝试过这样但它只允许数字
inputFormatters: [FilteringTextInputFormatter.allow(RegExp('[1-9,.,:]'))],
尝试下面的代码希望对您有帮助。在下面的代码中,如果输入的值超过 20 个,则光标将占据第一个位置。
创建一个类并声明它的最小值和最大值。
class LimitRange extends TextInputFormatter {
LimitRange(
this.minRange,
this.maxRange,
) : assert(
minRange < maxRange,
);
final int minRange;
final int maxRange;
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
var value = int.parse(newValue.text);
if (value < minRange) {
print('value print in between 1 - 20');
return TextEditingValue(text: minRange.toString());
} else if (value > maxRange) {
print('not more 20');
return TextEditingValue(text: maxRange.toString());
}
return newValue;
}
}
您的小部件:
TextField(
keyboardType: TextInputType.number,
inputFormatters: [
LengthLimitingTextInputFormatter(2),
LimitRange(1, 20),
],
),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)