关键代码

       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文本输入框 限制 数字键盘、输入小数点后两位的更多相关文章

  1. 限制EditText只能输入小数点后两位

    设置EditText只能输入小数点后两位,在价格等有限制的输入时特别有效 TextWatcher textWatcher = new TextWatcher() { @Override public ...

  2. Vue 限制input输入 限数字 或 小数点后两位number

    Vue 限制input输入 小数点后两位number <input type="number" @keydown="handleInput2" place ...

  3. input输入框只能输入数字和 小数点后两位

    //input输入框只能输入数字和 小数点后两位 function num(obj,val){ obj.value = obj.value.replace(/[^\d.]/g,"" ...

  4. JS控制文本框只能输入数字 \保留小数点后两位

    <input type="text" placeholder="保留到小数点后两位" maxlength="200" onkeyup= ...

  5. Js验证 :只能输入数字和小数点 验证是否是数字 js取float型小数点后两位

    JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'') ...

  6. 控制input标签中只能输入数字以及小数点后两位

    js 代码如下: /* 控制input标签中只能输入数字 和小数点后两位 */ function checkNum(obj) { //检查是否是非数字值 if (isNaN(obj.value)) { ...

  7. Javascript 智能输入数字且保留小数点后三位

    html: <input type="text" name="cprice" placeholder="最多保留小数点后三位" onk ...

  8. js控制input只能输入数字和小数点后两位,输入其他自动清除方法。

    工作中input='text'总会遇到要控制输入数字,或者是输入中文,输入电话,输入身份证号,邮箱等.今天我遇到的是要输入数字并且只能小数点后面两位的数字,还不能为负数.废话不多说上代码: <i ...

  9. input输入框只能输入正数和小数(保留小数点后两位)

    1.限制只能输入正数和小数保留小数点后两位 1 <input type="number" id="txtNum" /> 2 3 <script ...

  10. 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...

随机推荐

  1. Servlet内存马

    emmm.....本篇写的还不是很完善,学着后边的忘着后边的,后续边学边完善吧........ 概述 如果你不了解IDEA调试Tomcat和Tomcat各组件概念可以参考我的博客:JAVA WEB环境 ...

  2. 分享一个纯Python开发的系统程序,基于VSCode + WxPython开发的跨平台应用系统

    本项目是基于 wxPython 开发的 GUI 应用,主要用于管理基础框架内容,包括用户.角色.机构.权限.日志.菜单.字典.附件.通用编码规则.配置管理等基础框架内容. 愿景是构建一个基于Pytho ...

  3. Node.js 介绍和特点

    1.node.js是什么 node.js不是一门语言,而是一个开发平台,是一个基于 Chrome V8 引擎的 JavaScript 运行环境. 何为开发平台:有对应的语言和实现特定功能的api 2. ...

  4. 微信小程序手机号登录

    import { wxPhoneLogin, getPhoneNumber } from '../login' // 后端接口 // 服务端接口 - 获取openid function queryOp ...

  5. px2rem 实现vue rem 自适应/

    npm install postcss-px2rem px2rem-loader --save 新建js 文件rem.js // rem等比适配配置文件 // 基准大小 const baseSize ...

  6. C# 获取两经纬度之间的距离

    C# 获取两经纬度之间的距离 迷恋自留地 //地球半径,单位米 private const double EARTH_RADIUS = 6378137; /// <summary> /// ...

  7. [OS] 计算机资源虚拟化技术

    1 定义:计算机资源虚拟化 服务器虚拟化主要通过软件技术将物理服务器的硬件资源抽象化,创建多个独立的虚拟服务器环境. 2 虚拟化技术方向 以下是一些常见的服务器虚拟化方式和工具: 基于hypervis ...

  8. 09C++选择结构(3)

    一.求3个整数中最小值 题目:输入三个整数,表示梨的重量,输出最小的数. 方法1:经过三次两两比较,得出最小值. a<=b && a<=c min=a b<=c &a ...

  9. Qt/C++音视频开发49-推流到各种流媒体服务程序

    一.前言 最近将推流程序完善了很多功能,尤其是增加了对多种流媒体服务程序的支持,目前支持mediamtx.LiveQing.EasyDarwin.nginx-rtmp.ZLMediaKit.srs.A ...

  10. Qt编写可视化大屏电子看板系统30-模块8物料管理

    一.前言 物料管理模块包括库存占比.主要零件库存状况子模块,其中库存占比采用自定义控件环形进度条展示,总共有多种库存,具体根据数据库中的名称展示不同的界面,当库存数不够的时候,对应环形进度条颜色红色显 ...