颤振:无小数点的键盘

时间:2019-08-21 09:08:11

标签: flutter dart custom-keyboard

我需要一个只有数字(没有小数点符号)的numberInputKeyboard。我已经尝试过messages/12312,但这仍然无济于事

4 个答案:

答案 0 :(得分:5)

一个答案建议使用BlacklistingTextInputFormatter,它在您使用英语语言环境的情况下当然可以使用。但是,这可能不适用于使用,而不是.作为十进制分隔符的其他语言环境。

所以我建议使用WhitelistingTextInputFormatter

import "package:flutter/services.dart";
TextFormField(
  keyboardType: TextInputType.number,
  inputFormatters: [WhitelistingTextInputFormatter.digitsOnly],
)

这将只允许数字[0-9]

答案 1 :(得分:1)

第一种方法:-

根据此stackoverflow答案,您必须为其创建自定义键盘。

Android - is it possible to hide certain characters from the soft keyboard?

第二种方法:-

您可以使用RegExp将该内容列入黑名单,在这种情况下,您将无法输入dot(。)。

有关更多信息,请参见:https://api.flutter.dev/flutter/services/TextInputFormatter-class.html

        body: Center(
            child: TextFormField(
            decoration: InputDecoration(
                labelText: "Title",
                suffixIcon: GestureDetector(
                onTap: () {
                    setState(() {

                    });
                },
                child: Icon(Icons.clear),
                )),
            inputFormatters: [
               BlacklistingTextInputFormatter(RegExp("[.]"))
            ],
        )));

答案 2 :(得分:1)

不推荐使用BlacklistingTextInputFormatter和WhitelistingTextInputFormatter。如果只想输入数字,可以使用:

FilteringTextInputFormatter.digitsOnly

如果要接受带小数点的数字:

FilteringTextInputFormatter.allow(RegExp(r'^(\d+)?\.?\d{0,2}')

答案 3 :(得分:0)

为了移植这个线程,我做了这个,帮助了 Amit Prajapati 提供的链接,它是一个但更多的手册,但在我的情况下工作得很好

inputFormatters: [
          TextInputFormatter.withFunction((oldValue, newValue) {
            if (textInputType.decimal == true) {
              return newValue.copyWith(
                text: newValue.text.replaceAll(RegExp(r"\,"), "."),
              );
            }
            return newValue;
          }),
        ],

编辑:textInputType 是自定义 TextField 的变量