obscureText method
Returns an obscured version of this string using char repeated, or
null if empty.
The output length varies by ±obscureLength characters using a
time-based jitter to prevent guessing the original string length.
Example:
'password'.obscureText(); // '••••••••••' (length varies)
'secret'.obscureText(char: '*'); // '******' (length varies)
''.obscureText(); // null
Implementation
@useResult
String? obscureText({String char = '•', int obscureLength = 3}) {
if (isEmpty) {
return null;
}
final int seed = DateTime.now().microsecondsSinceEpoch;
final int extraLength = (seed % (2 * obscureLength + 1)) - obscureLength;
final int finalLength = length + extraLength;
return char * (finalLength > 0 ? finalLength : 1);
}