Flutter:没有小数点的键盘

Flutter : Keyboard without decimal point

我需要一个只有数字(没有小数点)的 numberInputKeyboard。我试过 keyboardType: TextInputType.numberWithOptions(decimal: false) 但这仍然对我没有帮助

第一种方法 :-

根据这个 Whosebug 答案,您必须为其创建自定义键盘。

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

第二种方法 :-

你可以用RegExp做黑名单,在这种情况下你不能输入点(.)。

更多可以参考这个: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("[.]"))
            ],
        )));

一个答案建议使用 BlacklistingTextInputFormatter,这在您使用英语语言环境的情况下肯定有效。然而,这可能不适用于其他使用 , 而不是 . 作为小数点分隔符的语言环境。

所以我建议使用 WhitelistingTextInputFormatter:

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

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

更新:

WhitelistingTextInputFormatter 已更名!以下是最新版本,不再被 FilteringTextInputFormatter.allow 弃用,并且还提供了数字的快捷方式:

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

BlacklistingTextInputFormatter 和 WhitelistingTextInputFormatter 已弃用。如果你只想接受数字,你可以使用:

FilteringTextInputFormatter.digitsOnly

如果你想接受带小数点的数字:

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

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

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

编辑:textInputType 是自定义文本字段的变量