generatePassword method
Generate a secure password
length
is the length of the password
includeUppercase
whether to include uppercase letters
includeLowercase
whether to include lowercase letters
includeNumbers
whether to include numbers
includeSymbols
whether to include symbols
Returns a secure random password
Implementation
String generatePassword({
int length = 16,
bool includeUppercase = true,
bool includeLowercase = true,
bool includeNumbers = true,
bool includeSymbols = true,
}) {
final chars = StringBuffer();
if (includeUppercase) chars.write('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
if (includeLowercase) chars.write('abcdefghijklmnopqrstuvwxyz');
if (includeNumbers) chars.write('0123456789');
if (includeSymbols) chars.write('!@#\$%^&*()_+-=[]{}|;:,.<>?');
if (chars.isEmpty) {
throw ArgumentError('At least one character set must be selected');
}
final charList = chars.toString().split('');
final password = StringBuffer();
for (int i = 0; i < length; i++) {
final randomIndex = _generateRandomBytes(1)[0] % charList.length;
password.write(charList[randomIndex]);
}
return password.toString();
}