diff --git a/icons/verve.png b/icons/verve.png new file mode 100644 index 0000000..426aa8d Binary files /dev/null and b/icons/verve.png differ diff --git a/lib/credit_card_form.dart b/lib/credit_card_form.dart index f2da606..ba8e380 100644 --- a/lib/credit_card_form.dart +++ b/lib/credit_card_form.dart @@ -180,7 +180,7 @@ class _CreditCardFormState extends State { late CreditCardModel creditCardModel; final MaskedTextController _cardNumberController = - MaskedTextController(mask: '0000 0000 0000 0000'); + MaskedTextController(mask: '0000 0000 0000 0000 000'); final TextEditingController _expiryDateController = MaskedTextController(mask: '00/00'); final TextEditingController _cardHolderNameController = @@ -281,7 +281,7 @@ class _CreditCardFormState extends State { validator: widget.cardNumberValidator ?? (String? value) { // Validate less that 13 digits +3 white spaces - if (value!.isEmpty || value.length < 16) { + if (value!.isEmpty || value.length < 19) { return widget.numberValidationMessage; } return null; diff --git a/lib/credit_card_widget.dart b/lib/credit_card_widget.dart index b2b5cf4..ad63218 100644 --- a/lib/credit_card_widget.dart +++ b/lib/credit_card_widget.dart @@ -19,6 +19,7 @@ const Map CardTypeIconAsset = { CardType.discover: 'icons/discover.png', CardType.elo: 'icons/elo.png', CardType.hipercard: 'icons/hipercard.png', + CardType.verve: 'icons/verve.png', }; class CreditCardWidget extends StatefulWidget { @@ -648,6 +649,9 @@ class _CreditCardWidgetState extends State CardType.hipercard: >{ ['606282'], }, + CardType.verve: >{ + ['5061'], + } }; /// This function determines the Credit Card type based on the cardPatterns @@ -753,6 +757,16 @@ class _CreditCardWidgetState extends State isAmex = true; break; + case CardType.verve: + icon = Image.asset( + CardTypeIconAsset[ccType]!, + height: 48, + width: 48, + package: 'flutter_credit_card', + ); + isAmex = false; + break; + default: icon = Container( height: 48, @@ -903,4 +917,5 @@ enum CardType { discover, elo, hipercard, + verve }