Flutter TextInputType.number 不强制使用仅数字键盘
Posted
技术标签:
【中文标题】Flutter TextInputType.number 不强制使用仅数字键盘【英文标题】:Flutter TextInputType.number is not forcing a number only keyboard 【发布时间】:2019-08-16 09:15:04 【问题描述】:我不明白我在这里缺少什么。我将 TextInputType 设置为数字,仍然可以输入任何字母、特殊字符甚至表情符号。我还尝试让孩子成为 TextInputType.numberWithOptions() 小部件,它会打开同一个键盘。这只是我手机上的一个错误吗? P20 专业版
Row(
children: <Widget>[
Text('TextInputType.number:'),
Flexible(
child: TextField(
maxLength: 3,
keyboardType: TextInputType.number,
)),
],
)
【问题讨论】:
keyboardType: TextInputType.number
正在为我显示数字键盘。尝试再次卸载并重新安装该应用程序。也尝试使用其他键盘,然后使用 SwiftKey。
【参考方案1】:
老年人抑郁时使用这个
maxLength: 10,
inputFormatters: [
// only accept letters from 0 to 9
FilteringTextInputFormatter(RegExp(r'[0-9]'), allow: true)
// Using for Text Only ==> (RegExp(r'[a-zA-Z]'))
],
keyboardType: TextInputType.number,
【讨论】:
【参考方案2】:anmol.majhail's 答案中的上述方法自 Flutter 2.0 起已弃用。 Flutter 建议从 WhitelistingTextInputFormatter.*
转移到 FilteringTextInputFormatter.*
。因此,为了在 Flutter 2.0 应用程序中实现相同的效果,请遵循以下代码摘录中的示例。
TextField(
maxLength: 3,
inputFormatters: <TextInputFormatter>[
FilteringTextInputFormatter.digitsOnly,
],
keyboardType: TextInputType.number,
),
【讨论】:
【参考方案3】:仅启用数字 - 您需要添加 - inputFormatters:
还添加 - keyboardType:
将无法单独使用。
代码:
TextField(
maxLength: 3,
inputFormatters: <TextInputFormatter>[
WhitelistingTextInputFormatter.digitsOnly,
],
keyboardType: TextInputType.number,
),
【讨论】:
这确实使得该字段只接受数字,但键盘仍然完全打开,我可以按任何字符。这肯定是一个改进,但我真的希望它像this number only keyboard 一样打开 @MilesAdamson - 你能在不同的手机或模拟器上试一试,看看会出现什么键盘。 看来这是我的手机 P20 Pro 的问题。它可以在其他手机上按预期工作,它们的键盘只有数字。但是您添加 WhitelistingTextInputFormatter 仍然很棒,谢谢以上是关于Flutter TextInputType.number 不强制使用仅数字键盘的主要内容,如果未能解决你的问题,请参考以下文章
[Flutter] flutter项目一直卡在 Running Gradle task 'assembleDebug'...
flutter 日志输出,Flutter打印日志,flutter log,flutter 真机日志
Flutter开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )
如何解决flutter gradle build error?C:\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 991