mask method

  1. @useResult
String mask({
  1. int visibleCount = 4,
  2. String maskChar = '*',
})

Masks this string, showing only the last visibleCount characters; the rest become maskChar.

If visibleCount is 0 or negative, the entire string is masked. If visibleCount is greater than or equal to length, the string is returned unchanged.

Throws ArgumentError if maskChar is empty.

Example:

'1234567890'.mask(visibleCount: 4);        // '******7890'
'card'.mask(visibleCount: 4, maskChar: 'x'); // 'card'
'ab'.mask(visibleCount: 5);                // 'ab'

Implementation

@useResult
String mask({
  int visibleCount = 4,
  String maskChar = '*',
}) {
  if (maskChar.isEmpty) {
    throw ArgumentError(_kErrMaskCharNonEmpty, _kParamMaskChar);
  }
  if (isEmpty) return this;
  if (visibleCount >= length) return this;
  if (visibleCount <= 0) return maskChar * length;
  final int hidden = length - visibleCount;
  return (maskChar * hidden) + replaceRange(0, hidden, '');
}