MaskInputFormatter constructor

MaskInputFormatter({
  1. required String? mask,
  2. bool? textAllCaps,
})

The constructor of MaskInputFormatter class accepts two arguments.

  1. mask this is required parameter, text will be formatted on the basis of this mask,
  2. 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;
    }
  }
}