这是我的代码:
Padding(
padding: const EdgeInsets.only(left: 8.0),
child: TextField(
inputFormatters: [
LengthLimitingTextInputFormatter(2),
WhitelistingTextInputFormatter.digitsOnly,
],
keyboardType: TextInputType.number,
decoration: new InputDecoration(
icon: Icon(Icons.assessment),
hintText: "Nilai",
border: InputBorder.none),
onChanged: (String str) {
nilai = str;
},
),
),
如何使输入的数字像只有1 - 20范围?
我在试着用
WhitelistingTextInputFormatter(RegExp("[1-20]")),
但是,因为这个WhitelistingTextInputFormatter RegExp类型是字符串,所以我仍然可以键入22,因为这里允许2。
7条答案
按热度按时间hec6srdp1#
当你键入一个数字然后删除它时,顶部向上投票的答案会表现出一些奇怪的行为(例如,如果你尝试键入一个新数字,它会停止工作)。
我做了一个稍微修改的TextInputFormatter,它让你指定最小值和最大值,并修复了原始答案中的一些奇怪行为。
ybzsozfc2#
通过扩展
TextInputFormatter
类,然后实现formatEditUpdate()
方法,可以实现自己的TextInputFormatter
。下面是一个使用情形示例-
您可以将自定义格式化程序添加到
TextField
,如下所示-希望这对你有帮助!
2g32fytz3#
我希望这对你有帮助
b09cbbtk4#
您可以将
onChanged
替换为:ojsjcaue5#
pjngdqdw6#
当文本更改时,可以使用clamp:
jyztefdp7#
有一个属性可用于最大长度
maxLength: 20,
,因此您可以使用