password_strength_checker 1.3.2
password_strength_checker: ^1.3.2 copied to clipboard
Generate secure passwords, check for exposed passwords, get visual feedback for strength or get form validation with a minimum password strength required.
password_strength_checker #
Generate secure passwords, check for exposed passwords, get visual feedback for password strength or get form validation with a minimum password strength required.
Check the strength of the password in a visual way, with an animation when the strength changes according to the settings given by the user.
Use it also inside a Form
to get form validation!
Features #
- Check for exposed common password using the
commonDictionary
, a map with 10,000 leaked passwords! - Use the
PasswordStrengthChecker
to have a visual feedback. - Use the
PasswordStrengthFormChecker
to have a built-inTextFormField
inside the widget and get form validation using aminimumStrengthRequired
. - Use the
PasswordGenerator
class to generate a secure random password based on the input configurations (PasswordGeneratorConfiguration
). - Create your custom strength to create your own rules or use the
PasswordStrength
default enum (see Custom Strength).
Demo #
Getting started #
PasswordStrengthChecker #
You can use the PasswordStrengthChecker
to only have a visual feedback, for example:
final passNotifier = ValueNotifier<PasswordStrength?>(null);
// ...
PasswordStrengthChecker(
strength: passNotifier,
),
See the full example here.
PasswordStrengthFormChecker #
You can use the PasswordStrengthFormChecker
to have a built-in TextFormField
inside the widget and get form validation using a minimumStrengthRequired
. For example:
PasswordStrengthFormChecker(
minimumStrengthRequired: PasswordStrength.secure,
onChanged: (password, notifier) {
notifier.value = PasswordStrength.calculate(text: password);
},
),
See the full example here.
PasswordGenerator #
You can use the PasswordGenerator
class to generate a secure random password based on the configurations. For example:
final config = PasswordGeneratorConfiguration(
length: 32,
minUppercase: 8,
minSpecialChars: 8,
// ...
);
final passwordGenerator = PasswordGenerator.fromConfig(
configuration: config,
);
final password = passwordGenerator.generate();
See the full example here.
Custom Strength #
You can use the default PasswordStrength
enum to set the strength of the password, or you can create your own enum that implements PasswordStrengthItem
and use it. For example:
enum CustomPassStrength implements PasswordStrengthItem {
weak,
medium,
strong;
@override
Color get statusColor => switch (this) {
CustomPassStrength.weak => Colors.red,
CustomPassStrength.medium => Colors.orange,
CustomPassStrength.strong => Colors.green,
};
@override
Widget? get statusWidget => switch (this) {
CustomPassStrength.weak => const Text('Weak'),
CustomPassStrength.medium => const Text('Medium'),
CustomPassStrength.strong => const Text('Strong'),
};
@override
double get widthPerc => switch (this) {
CustomPassStrength.weak => 0.15,
CustomPassStrength.medium => 0.4,
CustomPassStrength.strong => 0.75,
};
static CustomPassStrength? calculate({required String text}) {
// Implement your custom logic here
if (text.isEmpty) {
return null;
}
// Use the [commonDictionary] to see if a password
// is in 10,000 common exposed password list.
if (commonDictionary[text] == true) {
return CustomPassStrength.weak;
}
if (text.length < 6) {
return CustomPassStrength.weak;
} else if (text.length < 10) {
return CustomPassStrength.medium;
} else {
return CustomPassStrength.strong;
}
}
}
Contribution #
The project is open source and you can contribute to it here -> repository link
- If you found a bug, open an issue.
- If you have a feature request, open an issue.
- If you want to contribute, submit a pull request.
Contributors #
Made with ❤️ from dariowskii