Line data Source code
1 : // ignore_for_file: unnecessary_getters_setters 2 : 3 : import 'package:flutter/services.dart'; 4 : import 'package:folly_fields/util/credit_card_type.dart'; 5 : import 'package:folly_fields/util/mask_text_input_formatter.dart'; 6 : import 'package:folly_fields/validators/abstract_validator.dart'; 7 : 8 : /// 9 : /// 10 : /// 11 : class CreditCardNumberValidator extends AbstractValidator<String> { 12 : CreditCardType _type; 13 : 14 : /// 15 : /// 16 : /// 17 1 : CreditCardNumberValidator({CreditCardType type = CreditCardType.unknown}) 18 : : _type = type, 19 1 : super( 20 1 : <TextInputFormatter>[ 21 1 : MaskTextInputFormatter( 22 1 : mask: type.mask, 23 : ), 24 : ], 25 : ); 26 : 27 : /// 28 : /// 29 : /// 30 0 : CreditCardType get type => _type; 31 : 32 : /// 33 : /// 34 : /// 35 0 : set type(CreditCardType value) { 36 0 : _type = value; 37 : 38 0 : (inputFormatters!.first as MaskTextInputFormatter) 39 0 : .updateMask(mask: type.mask); 40 : } 41 : 42 : /// 43 : /// 44 : /// 45 0 : @override 46 0 : String format(String value) => strip(value); 47 : 48 : /// 49 : /// 50 : /// 51 1 : @override 52 : TextInputType get keyboard => TextInputType.number; 53 : 54 : /// 55 : /// 56 : /// 57 0 : @override 58 : bool isValid(String value) => 59 0 : _type.validLength(value) && _type.validNumber(value); 60 : }