- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL;博士 maxLength
在 TextFormField
有时允许超过指定限制的字符数。为什么会发生这种情况?
我正在尝试创建一个 Form
将用户输入的数据提供给我的应用程序。作为其中的一部分,我有一个 TextFormField
我试图限制允许输入的最大字符数 maxLength
.
我的问题是,而 maxLength
大多数情况下工作正常,似乎可以输入比指定限制更多的字符,特别是在快速输入时(例如快速连续按下数字)。
在下面的代码片段中,我设置了 maxLength
6 个字符,但如果您输入足够快,则可以输入 7 个字符。即可能的最大数字应该是 999,999,但可以输入 9,999,999。
我的代码片段
TextFormField(// text form field for inputting a number
validator: (val) => val.isEmpty ? 'Please enter a target to save' : null,
// Using inputFormatters to only accept digits as inputs
inputFormatters: <TextInputFormatter>[WhitelistingTextInputFormatter.digitsOnly,],
keyboardType: TextInputType.number,
// When I specify a maxLength of 6, it can still receive up to 7 digits if entered quickly
maxLength: 6,
onChanged: (val) {
setState(() {
_new_number_to_input = int.parse(val);
});
},
),
我也尝试使用以下代码作为
inputFormatters
的一部分,然而,它并没有真正做到我想要的。
new LengthLimitingTextInputFormatter(6)
我意识到我也可以添加
val.length < 7
作为我的验证器功能的一部分,但我试图找到一个不那么挑剔的解决方案。我还想知道发布的这个问题可能有什么其他影响,因为我希望表单验证能让我几乎 100% 地信任输入数据的完整性。
maxLength
,以及为什么在快速输入时可能会超出字符数限制?
最佳答案
添加 maxLengthEnforced: true,
到 TextFormField
连同 maxLength: 6,
.
小例子:
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Form(
autovalidate: true,
onChanged: () {
Form.of(primaryFocus.context).save();
},
child: Wrap(
children: List<Widget>.generate(5, (int index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: ConstrainedBox(
constraints: BoxConstraints.tight(Size(200, 50)),
child: TextFormField(
maxLength: 6,
maxLengthEnforced: true,
onSaved: (String value) {
print('Value for field $index saved as "$value"');
},
),
),
);
}),
),
);
}
}
引用自
TextFormField Docs
关于flutter - TextFormField 字符限制不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62788250/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!