Skip to content

Commit 1038ee0

Browse files
authored
Merge pull request #6 from joutvhu/develop
Fix group of negative number.
2 parents fd4d68a + 9a356cf commit 1038ee0

File tree

4 files changed

+63
-2
lines changed

4 files changed

+63
-2
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.0.0+5
2+
3+
- Fix group of negative numbers.
4+
15
## 1.0.0+4
26

37
- Allow disable fix number.

lib/src/filter.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class TextNumberFilter {
3434
bool limitedNumber = false;
3535
bool limitedInteger = false;
3636
bool? limitedDecimal;
37+
bool isNegative = false;
3738
bool numberStarted = false;
3839
bool hasNumber = false;
3940
bool foundNumbers = false;
@@ -81,6 +82,7 @@ class TextNumberFilter {
8182
bool filterNext(int value, int index, LookupTextValueEditor state) {
8283
bool allow = false;
8384
if (!numberStarted && options.allowNegative && value == _negative) {
85+
isNegative = true;
8486
allow = true;
8587
} else if (decimalPoint == null) {
8688
if (_number_0 <= value && value <= _number_9) {
@@ -315,9 +317,14 @@ class TextNumberFilter {
315317
void groupDigits() {
316318
if (options.groupDigits != null) {
317319
var index = integerDigits;
320+
var startPoint = 0;
321+
if (isNegative) {
322+
index += 1;
323+
startPoint = 1;
324+
}
318325
while (true) {
319326
index -= options.groupDigits!;
320-
if (index < 1) {
327+
if (index <= startPoint) {
321328
break;
322329
}
323330
editor.insert(index, groupSeparator);

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: number_text_input_formatter
22
description: Number Text Input Formatter for Flutter
3-
version: 1.0.0+4
3+
version: 1.0.0+5
44

55
homepage: https://github.com/joutvhu/number_text_input_formatter
66
repository: https://github.com/joutvhu/number_text_input_formatter.git

test/number_text_input_formatter_test.dart

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,56 @@ void main() {
410410
expect(result.text, '-2454.41');
411411
});
412412

413+
test('allow_negative_4', () {
414+
var result = NumberTextInputFormatter(
415+
integerDigits: 13,
416+
decimalDigits: 2,
417+
groupDigits: 3,
418+
allowNegative: true,
419+
).formatEditUpdate(
420+
const TextEditingValue(
421+
text: '',
422+
),
423+
const TextEditingValue(
424+
text: '-245.41',
425+
),
426+
);
427+
expect(result.text, '-245.41');
428+
});
429+
430+
test('allow_negative_5', () {
431+
var result = NumberTextInputFormatter(
432+
integerDigits: 13,
433+
decimalDigits: 2,
434+
groupDigits: 3,
435+
allowNegative: true,
436+
).formatEditUpdate(
437+
const TextEditingValue(
438+
text: '',
439+
),
440+
const TextEditingValue(
441+
text: '-2405.41',
442+
),
443+
);
444+
expect(result.text, '-2,405.41');
445+
});
446+
447+
test('allow_negative_6', () {
448+
var result = NumberTextInputFormatter(
449+
integerDigits: 13,
450+
decimalDigits: 2,
451+
allowNegative: true,
452+
).formatEditUpdate(
453+
const TextEditingValue(
454+
text: '',
455+
),
456+
const TextEditingValue(
457+
text: '--245.41',
458+
),
459+
);
460+
expect(result.text, '-245.41');
461+
});
462+
413463
test('insert_decimal_point_1', () {
414464
var result = NumberTextInputFormatter(
415465
integerDigits: 13,

0 commit comments

Comments
 (0)