我需要一个只有数字(没有小数点符号)的numberInputKeyboard。我已经尝试过messages/12312
,但这仍然无济于事
答案 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 的变量