Search packages, repositories and app categories

password_strength_checker cover
Package detailsv1.3.2

password_strength_checker

Generate secure passwords, check for exposed passwords, get visual feedback for strength or get form validation with a minimum password strength required.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
8.5K
Likes
55
Pub points
150

Install package

flutter pub add password_strength_checker

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Flutter package that helps generate secure passwords, validate their strength, and check if they've been exposed in data breaches. It provides real-time visual feedback on password strength and supports form validation with customizable minimum strength requirements. Ideal for applications requiring robust authentication, it integrates seamlessly into password input fields across multiple platforms.

Use cases

  • Form validation with minimum strength
  • Real-time password strength feedback
  • Checking for exposed passwords
  • Secure password generation
  • Authentication flow enhancement
  • Cross-platform password fields

Key features

  • Visual strength indicators
  • Exposed password detection
  • Customizable strength thresholds
  • Password generation utility
  • Integration with form validators
  • Multi-platform support

Suitable for

  • Authentication screens
  • User registration forms
  • Security-focused apps
  • Password management tools
  • Developer teams prioritizing security
  • Apps requiring compliance with password policies

Considerations

  • Requires internet access for breach checks
  • May increase app size slightly
  • Depends on external APIs for exposure lookup
  • Not suitable for offline-only environments
  • Performance impact during real-time validation
  • Needs proper error handling for API failures

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

password_strength_checker

License Pub Version Pub Likes Pub Points Pub Monthly Downloads GitHub code size in bytes GitHub Repo stars GitHub issues GitHub release (latest by date) GitHub top language CI

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

Demo Form Gif Demo Gif Demo Generator Gif

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 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();

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

Categories

Source repository

Projects using this package