mask method

String mask({
  1. int visibleStart = 2,
  2. int visibleEnd = 2,
  3. String maskChar = '*',
  4. bool maskIfShorter = false,
})

Masks the middle of a string, revealing visibleStart characters from the start and visibleEnd characters from the end.

Example:

'9876543210'.mask(visibleStart: 2, visibleEnd: 4); // 98******3210
'9876543210'.mask(visibleStart: 0, visibleEnd: 4); // ********3210

Implementation

String mask({
  int visibleStart = 2,
  int visibleEnd = 2,
  String maskChar = '*',
  bool maskIfShorter = false,
}) {
  if (_isEmptyOrNull) return '';

  final value = this!.trim();
  final length = value.length;

  if (length <= visibleStart + visibleEnd) {
    return maskIfShorter ? _repeatMask(maskChar, length) : value;
  }

  final start = value.substring(0, visibleStart);
  final end = visibleEnd > 0 ? value.substring(length - visibleEnd) : '';
  final hiddenCount = length - visibleStart - visibleEnd;

  return '$start${_repeatMask(maskChar, hiddenCount)}$end';
}