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与原生混编(iOS)

Flutter-布局

如何解决flutter gradle build error?C:\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 991