Flutter TextField中數字的精確限定

2021-10-03 08:17:28 字數 1915 閱讀 3141

主要是新建乙個文字格式類,繼承textinputformatter,在內部進行精確控制

實現整數字及小數字的長度控制,小數字為零即限定整數長度,限制以點開頭及00,01,02這種非法輸入

import

'package:flutter/services.dart'

;///數字輸入的精確控制

class

textnumberlimitformatter

extends

textinputformatter

//只允許輸入數字和小數點if(

!exp.

hasmatch

(newvalue.text)

)///包含小數點的情況

if(newvalue.text.

contains

(pointer)

) string input = newvalue.text;

int index = input.

indexof

(pointer)

;///小數點前位數

int lengthbeforepointer = input.

substring(0

, index)

.length;

///整數部分大於約定長度

if(lengthbeforepointer > _intlen)

///小數點後位數

int lengthafterpointer = input.

substring

(index, input.length)

.length -1;

print

('小數後位數'

+lengthafterpointer.

tostring()

);///小數字大於精度

if(lengthafterpointer > _declen)

}elseif(

//以點開頭

newvalue.text.

startswith

(pointer)

||//如果第1位為0,並且長度大於1,排除00,01-09所有非法輸入

(newvalue.text.

startswith

(zero)

&& newvalue.text.length>1)

||//如果整數長度超過約定長度

newvalue.text.length>_intlen

)return newvalue;}}

//使用:

child:

textfield

( keyboardtype: textinputtype.number,

maxlines:1,

textalign: textalign.right,

focusnode: pricefocus,

inputformatters:

[textnumberlimitformatter(5

,3),

],//整數5位,小數3樓

inputformatters:

[textnumberlimitformatter(5

,0)]

,//只整數5位

1、整數5位,小數3位

2、只取整數5樓

3、限制00,01,02,03,04等非法輸入

Oracle中left join中右表的限制條件

sql中最簡單形式的left join,是直接根據關聯字段,以左表為基準,對右表進行匹配。在select語句中選取的字段,如果有右表的記錄 一般都是需要右表的某些記錄的 取出配對成功的右表記錄中對應的這個欄位的值 否則,直接置null。這本身就是left join的特點 保證左表記錄完整,右表只是輔...

為什麼計算機中的小數字無法精確

想搞清這個問題,首先要明白十進位制和二進位制的轉換關係 以數字43.21轉換為二進位制進行說明 43 2 21.1 21 2 10.1 10 2 5.0 5 2 2.1 2 2 1.0 1 2 0.1 整數部分 101011 總結 不斷除以基數 2進製的基數是2 倒序取餘數,110101 0.212...

為什麼計算機中的小數字無法精確

想搞清這個問題,首先要明白十進位制和二進位制的轉換關係 以數字43.21轉換為二進位制進行說明 43 2 21.1 21 2 10.1 10 2 5.0 5 2 2.1 2 2 1.0 1 2 0.1 整數部分 101011 總結 不斷除以基數 2進製的基數是2 倒序取餘數,110101 0.212...