Flutter:KeyboardType属性在TextFormField中无法按预期工作,仍然可以粘贴文本。如何更改输入类型?(Flutter)

时间:2019-09-25 13:44:39

标签: android flutter textfield flutter-layout

我正在使用TextFormField来获取数字作为输入,因此我使用了此代码段

keyboardType: TextInputType.number,

这是我的TextFormField窗口小部件代码

         TextFormField(
                  keyboardType: TextInputType.number,
                  style: textstyle,
                  controller: principal,
                  validator: (String value) {
                    if (value.isEmpty) {
                      return "Please enter principal amount e.g 3245";
                    }
                  },
                  decoration: InputDecoration(
                      labelText: "Principal",
                      labelStyle: textstyle,
                      hintText: "Rupees",
                      border: OutlineInputBorder(
                          borderRadius: BorderRadius.circular(5.0))),
                )

但是现在我可以在此处显示的相同字段中粘贴一些文本enter image description here

那么现在我该如何格式化TextFormfield来限制仅键入数字和限制粘贴文本?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用WhitelistingTextInputFormatter 喜欢

inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],

参见官方docs

答案 1 :(得分:0)

从 Flutter 版本 1.20.0-1.0.pre 开始,已接受的答案现已弃用。现在,使用 inputFormatters: [FilteringTextInputFormatter.digitsOnly], 代替 (see documentation)

此外,如果您想更好地控制使用 RegEx 输入的内容,请使用 FilteringTextInputFormatter.allow(RegExp(r'your regex here'))