@@ -75,7 +75,6 @@ class TextNumberFilter {
7575
7676 TextValueEditor filter () {
7777 editor.forEach (filterNext, filterComplete);
78- afterFilter ();
7978 return editor;
8079 }
8180
@@ -118,9 +117,20 @@ class TextNumberFilter {
118117 state.remove (startPosition, length);
119118 }
120119
121- if (hasNumber && integerDigits == 0 ) {
122- integerDigits = 1 ;
123- state.prefix ('0' );
120+ insertIntegerDigits ();
121+
122+ if (editor.isNotEmpty) {
123+ if (decimalPoint != null ) {
124+ if (decimalDigits == 0 ) {
125+ insertDecimalDigits ();
126+ }
127+ } else {
128+ if (hasDecimalPoint) {
129+ insertDecimalPoint ();
130+ }
131+ }
132+
133+ groupDigits ();
124134 }
125135 }
126136
@@ -174,8 +184,10 @@ class TextNumberFilter {
174184 if (! allowing && startPosition < state.index) {
175185 state.remove (startPosition, state.index);
176186 }
177- state.prefix ('0' );
178- integerDigits = 1 ;
187+ if (options.fixNumber) {
188+ state.prefix ('0' );
189+ integerDigits = 1 ;
190+ }
179191 allowing = true ;
180192 startPosition = state.index;
181193 }
@@ -254,25 +266,18 @@ class TextNumberFilter {
254266 return allow;
255267 }
256268
257- void afterFilter () {
258- if (editor.isNotEmpty) {
259- if (decimalPoint != null ) {
260- if (decimalDigits == 0 ) {
261- insertDecimalDigits ();
262- }
263- } else {
264- if (hasDecimalPoint) {
265- insertDecimalPoint ();
266- }
269+ void insertIntegerDigits () {
270+ if ((decimalPoint != null || hasNumber) && integerDigits == 0 ) {
271+ if (! removing && options.fixNumber) {
272+ integerDigits = 1 ;
273+ editor.prefix ('0' );
267274 }
268-
269- groupDigits ();
270275 }
271276 }
272277
273278 void insertDecimalDigits () {
274279 decimalPoint ?? = editor.length - 1 ;
275- if (! removing) {
280+ if (! removing && (options.fixNumber || options.insertDecimalDigits) ) {
276281 decimalDigits = options.decimalDigits ?? 1 ;
277282 editor.suffix ('0' * decimalDigits);
278283 }
0 commit comments