maskPhone method
Masks a phone number after stripping non-digit characters.
Use visibleStart and visibleEnd to control how many digits remain
visible at the beginning and end. When keepPlusPrefix is true and the
input starts with +, the plus sign is preserved in the output.
Example:
'9876543210'.maskPhone(visibleStart: 2, visibleEnd: 4); // 98******3210
'+919876543210'.maskPhone(visibleStart: 3, visibleEnd: 4); // +919*****3210
Implementation
String maskPhone({
int visibleStart = 2,
int visibleEnd = 4,
String maskChar = '*',
bool keepPlusPrefix = true,
bool maskIfShorter = false,
String? separator,
}) {
if (_isEmptyOrNull) return '';
final raw = this!.trim();
final hasPlus = keepPlusPrefix && raw.startsWith('+');
final digits = raw.replaceAll(RegExp(r'\D'), '');
if (digits.isEmpty) return '';
final maskedDigits = digits.mask(
visibleStart: visibleStart,
visibleEnd: visibleEnd,
maskChar: maskChar,
maskIfShorter: maskIfShorter,
);
final result = hasPlus ? '+$maskedDigits' : maskedDigits;
if (separator == null || separator.isEmpty) return result;
return _formatWithSeparator(
value: result,
separator: separator,
preservePrefix: hasPlus ? '+' : null,
groupSize: 2,
);
}