我需要一个数字输入键盘,只有数字(没有十进制符号)。我已经尝试了keyboardType: TextInputType.numberWithOptions(decimal: false),但仍然没有帮助我
keyboardType: TextInputType.numberWithOptions(decimal: false)
jpfvwuh41#
一个答案是推荐使用BlacklistingTextInputFormatter,它在英语语言环境中当然有效,但是在其他使用,而不是.作为十进制分隔符的语言环境中可能不起作用。因此,我建议使用WhitelistingTextInputFormatter:
BlacklistingTextInputFormatter
,
.
WhitelistingTextInputFormatter
import "package:flutter/services.dart"; TextFormField( keyboardType: TextInputType.number, inputFormatters: [WhitelistingTextInputFormatter.digitsOnly], )
这将只允许数字[0-9]。
[0-9]
WhitelistingTextInputFormatter已被重命名!以下是最新版本,不再被FilteringTextInputFormatter.allow弃用,并提供了数字的快捷方式:
FilteringTextInputFormatter.allow
import "package:flutter/services.dart"; TextFormField( keyboardType: TextInputType.number, inputFormatters: [FilteringTextInputFormatter.digitsOnly], )
fv2wmkja2#
不推荐使用BlacklistingTextInputFormatter和WhitelistingTextInputFormatter。如果要仅允许数字,可以用途:
FilteringTextInputFormatter.digitsOnly
如果你想接受带小数点的数字:
FilteringTextInputFormatter.allow(RegExp(r'^(\d+)?\.?\d{0,2}')
q8l4jmvw3#
第一次接近:-
根据这个stackoverflow的答案,你必须为它创建你的自定义键盘。Android - is it possible to hide certain characters from the soft keyboard?
第二种方法:-
你可以用RegExp来做黑名单,在这种情况下你不能输入点(.)。欲了解更多信息,请参阅:https://api.flutter.dev/flutter/services/TextInputFormatter-class.html
RegExp
body: Center( child: TextFormField( decoration: InputDecoration( labelText: "Title", suffixIcon: GestureDetector( onTap: () { setState(() { }); }, child: Icon(Icons.clear), )), inputFormatters: [ FilteringTextInputFormatter.deny(RegExp("[.]")), ], )));
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是自定义文本字段的变量
textInputType
4条答案
按热度按时间jpfvwuh41#
一个答案是推荐使用
BlacklistingTextInputFormatter
,它在英语语言环境中当然有效,但是在其他使用,
而不是.
作为十进制分隔符的语言环境中可能不起作用。因此,我建议使用
WhitelistingTextInputFormatter
:这将只允许数字
[0-9]
。WhitelistingTextInputFormatter
已被重命名!以下是最新版本,不再被FilteringTextInputFormatter.allow
弃用,并提供了数字的快捷方式:fv2wmkja2#
不推荐使用BlacklistingTextInputFormatter和WhitelistingTextInputFormatter。如果要仅允许数字,可以用途:
如果你想接受带小数点的数字:
q8l4jmvw3#
第一次接近:-
根据这个stackoverflow的答案,你必须为它创建你的自定义键盘。
Android - is it possible to hide certain characters from the soft keyboard?
第二种方法:-
你可以用
RegExp
来做黑名单,在这种情况下你不能输入点(.)。欲了解更多信息,请参阅:https://api.flutter.dev/flutter/services/TextInputFormatter-class.html
8nuwlpux4#
为了aport这个线程我这样做了,帮助与Amit Prajapati提供的链接,它的一个,但更多的手册,但在我的情况下工作完美
EDIT:
textInputType
是自定义文本字段的变量