mask method
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, '');
}