MaskInputFormatter constructor
The constructor of MaskInputFormatter class accepts two arguments.
- mask this is required parameter, text will be formatted on the basis of this mask,
- textAllCaps this is optional, when user wants all letters capital then he can set textAllCaps = true,
Implementation
MaskInputFormatter({required this.mask, this.textAllCaps}) {
textAllCaps = textAllCaps ?? false;
mask = mask ?? '';
/// checking regex in mask
if (mask!.contains('#') && mask!.contains('A'))
_regex = _letters + _numbers;
else if (mask!.contains('#'))
_regex = _numbers;
else if (mask!.contains('A'))
_regex = _letters;
else {
print('invalid mask \'$mask\' (Ex.\'AAA-###\')');
mask = '';
return;
}
_maxLength = mask!.length;
int maskPos = 0;
/// separating mask characters and positions form applied mask
for (int i = 0; i < _maxLength;) {
String ch = mask![i];
if (ch != '#' && ch != 'A') {
String sChar = '';
for (; (sChar != '#' && sChar != 'A' && i < _maxLength);) {
ch = ch + sChar;
i++;
if (i < _maxLength) {
sChar = mask![i];
}
}
_maskIndices.add(maskPos);
_maskChars.add(ch);
maskPos++;
} else {
i++;
maskPos++;
_allowableValues = _allowableValues + ch;
}
}
}