dart Flutter :键盘无小数点

yqkkidmi  于 2023-01-03  发布在  Flutter
关注(0)|答案(4)|浏览(158)

我需要一个数字输入键盘,只有数字(没有十进制符号)。我已经尝试了keyboardType: TextInputType.numberWithOptions(decimal: false),但仍然没有帮助我

jpfvwuh4

jpfvwuh41#

一个答案是推荐使用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],
)
fv2wmkja

fv2wmkja2#

不推荐使用BlacklistingTextInputFormatter和WhitelistingTextInputFormatter。如果要仅允许数字,可以用途:

FilteringTextInputFormatter.digitsOnly

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

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

q8l4jmvw3#

第一次接近:-

根据这个stackoverflow的答案,你必须为它创建你的自定义键盘。
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: [
               FilteringTextInputFormatter.deny(RegExp("[.]")),
            ],
        )));
8nuwlpux

8nuwlpux4#

为了aport这个线程我这样做了,帮助与Amit Prajapati提供的链接,它的一个,但更多的手册,但在我的情况下工作完美

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

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

相关问题