flutter-TextField文本输入框 限制 数字键盘、输入小数点后两位
关键代码
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter(RegExp("[0-9.]"), allow: true),
MyNumberTextInputFormatter(digit: 2),
],
TextField完整代码
1 TextField(
2 controller: _money,
3 keyboardType: TextInputType.number,
4 inputFormatters: [
5 FilteringTextInputFormatter(RegExp("[0-9.]"), allow: true),
6 MyNumberTextInputFormatter(digit: 2),
7 ],
8 textAlign: TextAlign.left,
9 style: TextStyle(fontSize: 25.sp),
10 decoration: InputDecoration(
11 border: InputBorder.none,
12 hintText: '本次最多可提现${alipayMsg['money']}元',
13 hintStyle: TextStyle(color: Color.fromRGBO(119, 119, 119, 1), height: 1),
14 ),
15 autofocus: false,
16 onChanged: (val) {
17 money = val;
18 },
19 )
MyNumberTextInputFormatter完整代码
1 import 'package:flutter/services.dart';
2
3 class MyNumberTextInputFormatter extends TextInputFormatter {
4 static const defaultDouble = 0.001;
5
6 ///允许的小数位数,-1代表不限制位数
7 int digit;
8 MyNumberTextInputFormatter({this.digit = -1});
9 static double strToFloat(String str, [double defaultValue = defaultDouble]) {
10 try {
11 return double.parse(str);
12 } catch (e) {
13 return defaultValue;
14 }
15 }
16
17 ///获取目前的小数位数
18 static int getValueDigit(String value) {
19 if (value.contains(".")) {
20 return value.split(".")[1].length;
21 } else {
22 return -1;
23 }
24 }
25
26 @override
27 TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
28 String value = newValue.text;
29 int selectionIndex = newValue.selection.end;
30 if (value == ".") {
31 value = "0.";
32 selectionIndex++;
33 } else if (value == "-") {
34 value = "-";
35 selectionIndex++;
36 } else if (value != "" && value != defaultDouble.toString() && strToFloat(value, defaultDouble) == defaultDouble || getValueDigit(value) > digit) {
37 value = oldValue.text;
38 selectionIndex = oldValue.selection.end;
39 }
40 return new TextEditingValue(
41 text: value,
42 selection: new TextSelection.collapsed(offset: selectionIndex),
43 );
44 }
45 }
flutter-TextField文本输入框 限制 数字键盘、输入小数点后两位的更多相关文章
- 限制EditText只能输入小数点后两位
设置EditText只能输入小数点后两位,在价格等有限制的输入时特别有效 TextWatcher textWatcher = new TextWatcher() { @Override public ...
- Vue 限制input输入 限数字 或 小数点后两位number
Vue 限制input输入 小数点后两位number <input type="number" @keydown="handleInput2" place ...
- input输入框只能输入数字和 小数点后两位
//input输入框只能输入数字和 小数点后两位 function num(obj,val){ obj.value = obj.value.replace(/[^\d.]/g,"" ...
- JS控制文本框只能输入数字 \保留小数点后两位
<input type="text" placeholder="保留到小数点后两位" maxlength="200" onkeyup= ...
- Js验证 :只能输入数字和小数点 验证是否是数字 js取float型小数点后两位
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'') ...
- 控制input标签中只能输入数字以及小数点后两位
js 代码如下: /* 控制input标签中只能输入数字 和小数点后两位 */ function checkNum(obj) { //检查是否是非数字值 if (isNaN(obj.value)) { ...
- Javascript 智能输入数字且保留小数点后三位
html: <input type="text" name="cprice" placeholder="最多保留小数点后三位" onk ...
- js控制input只能输入数字和小数点后两位,输入其他自动清除方法。
工作中input='text'总会遇到要控制输入数字,或者是输入中文,输入电话,输入身份证号,邮箱等.今天我遇到的是要输入数字并且只能小数点后面两位的数字,还不能为负数.废话不多说上代码: <i ...
- input输入框只能输入正数和小数(保留小数点后两位)
1.限制只能输入正数和小数保留小数点后两位 1 <input type="number" id="txtNum" /> 2 3 <script ...
- 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...
随机推荐
- 【架构】整理了一份通用的MVP框架示例代码
最近回顾了一下MVP框架,结合阅读到的几篇不错的博客,自己整理了一份可用于实际工作的MVP框架示例代码,这里做个记录,也顺便和网友们分享一下. 代码示例演示的是一个输入员工号查询员工信息并显示的场景, ...
- IntelliJ IDEA 中 ctrl + w 一键选中双引号中的字符串内容
记录下,之前一直知道在 IntelliJ IDEA 中快速选中一个词的快捷键是 ctrl + w,可是有时我们想一键选中双引号中的字符串内容,正好这个字符串中的内容有各种特殊字符,比如",& ...
- windows server系统中,Pro运行深度学习工具错误
安装深度学习包后,运行相关工具的时候报错,缺失cv2的模块. 在arcpy执行窗口,直接去引入cv2包的时候,确实发了错误. 查看了相关路径,确认cv2的包,在对应路径已经存在,也有对应的元数据信息, ...
- cve-2021-3156-sudo堆溢出简单分析
调试方式 首先从github下载代码 https://github.com/sudo-project/sudo/archive/SUDO_1_9_5p1.tar.gz 编译 tar xf sudo-S ...
- git gitignore文件不生效
配置了 .gitigore 文件不生效,是刚开始将那些过滤的文件加到了版本控制.后续增加的,没有进入到版本控制 解决办法就是从版本控制移除,重新更新下gitignore文件 执行以下命令: 根据情况自 ...
- 第36次ccf-csp题解(思维)
比赛链接 https://sim.csp.thusaac.com/contest/36/home 比赛感受 这会刚打完上海icpc,比起区域赛的题,这个简单太多了. 感受还不错,写的很顺手.除了第 ...
- error C2065: “CV_DATA_AS_ROW”: 未声明的标识符
ce_dect\main_face.cpp(117): error C2065: "CV_DATA_AS_ROW": 未声明的标识符将 "CV_PCA_DATA_AS_R ...
- Pelco-D控制协议
1. 通令参数: 标准速率为4800bps,无校验, 8位数据位,1位停止位 2.命令串格式: 一个PTZ控制命令为7字节的十六进制代码,格式如下: Word 1 Word2 Word 3 Wor ...
- [转]使用Unity进行3D开发的思路和主要技术优势
此处直接附上别人撰写好的博文,分享给各位读者. 原文链接:Unity3D手游开发实践--<腾讯桌球:客户端总结>.
- DVWA靶场File Inclusion (文件包含) 漏洞所有级别通关教程及源码解析
文件包含 文件包含漏洞(File Inclusion Vulnerability)是一种常见的网络安全漏洞,主要出现在应用程序中不安全地处理文件路径时.攻击者可以利用此漏洞执行恶意文件,或者访问不该被 ...