flutter - 如何在 textField 中允许正负双倍 - Flutter

标签 flutter dart

TextField提到后keyboardType: TextInputType.number还可以使用逗号(,) 和其他特殊字符。所以我想阻止输入特殊字符,并且只允许在开头使用连字符(-)。

//valid entries
10
10.0
-10
-10.0
.01

//Invalid Entries
10.0.2
10-0
10.0-

我试图用这个来实现
var expression = RegExp('([-]?)([0-9]+)([.]?)([0-9]+)');
TextField(
keyboardType: TextInputType.number,
inputFormatters: [WhitelistingTextInputFormatter(expression)],
controller: _answer,
}

但它对我不起作用。所以我尝试使用 onChanged: answerOnChangeListener(_answer)但它导致滞后
answerOnChangeListener(TextEditingController controller) {
    int oldLength = controller.text.length;
    String newValue = stringMatch(controller.text);
    if (oldLength != newValue.length) controller.text = newValue;
}

String stringMatch(String substring) {
    String response = expression
    .allMatches(substring)
    .map<String>((Match match) => match.group(0))
    .join();
    print("stringMatch : $response");
    return response;
}

最佳答案

"^-?\d"*
将此正则表达式与
inputFormatter: FilteringTextInputFormatter.allow(new RegExp("^-?\d")),

关于flutter - 如何在 textField 中允许正负双倍 - Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56540139/

相关文章:

Flutter 应用中的 Oauth2 流程

android - 如何在if-else条件下使图标值颜色发生变化?

dart - Dart 自定义元素中的extendTag

dart - 当其中一些没有前导对象时对齐 ListTile 项目

flutter - 为什么 android studio 设置中缺少我的 Gradle 项目菜单?

flutter - 如何在回调中获取实例

flutter - 预期类型为 'String' 的值,但得到类型 'Null' 之一

flutter - flutter 如何在BottomNavigationBar中禁用幻灯片动画

flutter - 如何使用Dart/Flutter在Cloud Firestore中存储简单矩阵?

dart - Flutter:禁用应用程序的屏幕截图