Skip to content

Commit 78c05e8

Browse files
committed
Added spaces to initial string for card number field
1 parent 558b719 commit 78c05e8

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

lib/src/common/card_utils.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ class CardUtils {
7878
return year;
7979
}
8080

81+
/// Removes non numerical characters from the string
8182
static String getCleanedNumber(String text) {
8283
if (text == null) {
8384
return '';

lib/src/common/utils.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,17 @@ class Utils {
5151
throw new InvalidEmailException(charge.email);
5252
}
5353
}
54+
55+
/// Add double spaces after every 4th character
56+
static String addSpaces(String text) {
57+
var buffer = new StringBuffer();
58+
for (int i = 0; i < text.length; i++) {
59+
buffer.write(text[i]);
60+
var nonZeroIndex = i + 1;
61+
if (nonZeroIndex % 4 == 0 && nonZeroIndex != text.length) {
62+
buffer.write(' '); // Add double spaces.
63+
}
64+
}
65+
return buffer.toString();
66+
}
5467
}

lib/src/widgets/common/input_formatters.dart

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter/services.dart';
3+
import 'package:flutter_paystack/src/common/utils.dart';
34

45
class CardMonthInputFormatter extends TextInputFormatter {
56
String previousText;
@@ -42,16 +43,7 @@ class CardNumberInputFormatter extends TextInputFormatter {
4243
return newValue;
4344
}
4445

45-
var buffer = new StringBuffer();
46-
for (int i = 0; i < text.length; i++) {
47-
buffer.write(text[i]);
48-
var nonZeroIndex = i + 1;
49-
if (nonZeroIndex % 4 == 0 && nonZeroIndex != text.length) {
50-
buffer.write(' '); // Add double spaces.
51-
}
52-
}
53-
54-
var string = buffer.toString();
46+
var string = Utils.addSpaces(text);
5547
return newValue.copyWith(
5648
text: string,
5749
selection: new TextSelection.collapsed(offset: string.length));

lib/src/widgets/input/card_input.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_paystack/src/common/card_utils.dart';
3+
import 'package:flutter_paystack/src/common/utils.dart';
34
import 'package:flutter_paystack/src/models/card.dart';
45
import 'package:flutter_paystack/src/widgets/buttons.dart';
56
import 'package:flutter_paystack/src/widgets/input/cvc_field.dart';
@@ -36,8 +37,9 @@ class _CardInputState extends State<CardInput> {
3637
super.initState();
3738
numberController = new TextEditingController();
3839
numberController.addListener(_getCardTypeFrmNumber);
39-
numberController.text =
40-
_card != null && _card.number != null ? _card.number : null;
40+
if (_card?.number != null) {
41+
numberController.text = Utils.addSpaces(_card.number);
42+
}
4143
}
4244

4345
@override

0 commit comments

Comments
 (0)