password_strength_checker

Creator: coderz1093

Last updated:

Add to Cart

Description:

password strength checker

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-in TextFormField inside the widget and get form validation using a minimumStrengthRequired.
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,
),
copied to clipboard
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);
},
),
copied to clipboard
See the full example here.
PasswordGenerator #
You can use the PasswordGeneratorclass 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();
copied to clipboard
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) {
case CustomPassStrength.weak:
return Colors.red;
case CustomPassStrength.medium:
return Colors.orange;
case CustomPassStrength.strong:
return Colors.green;
}
}

@override
Widget? get statusWidget {
switch (this) {
case CustomPassStrength.weak:
return const Text('Weak');
case CustomPassStrength.medium:
return const Text('Medium');
case CustomPassStrength.strong:
return const Text('Strong');
default:
return null;
}
}

@override
double get widthPerc {
switch (this) {
case CustomPassStrength.weak:
return 0.15;
case CustomPassStrength.medium:
return 0.4;
case CustomPassStrength.strong:
return 0.75;
default:
return 0.0;
}
}

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;
}
}
}
copied to clipboard
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

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.