# Password Generator with Dart

Hi everyone as my side project I wrote an Android App to generate **strong password** for my online accounts and I made it with [Flutter](https://flutter.dev). This is the Dart code that makes all happen:

```
import 'dart:math';

/**
 * @desc Function to generate password based on some criteria
 * @param bool _isWithLetters: password must contain letters
 * @param bool _isWithUppercase: password must contain uppercase letters
 * @param bool _isWithNumbers: password must contain numbers
 * @param bool _isWithSpecial: password must contain special chars
 * @param int _numberCharPassword: password length
 * @return string: new password
 */
String generatePassword(bool _isWithLetters, bool _isWithUppercase,
    bool _isWithNumbers, bool _isWithSpecial, double _numberCharPassword) {

  //Define the allowed chars to use in the password
  String _lowerCaseLetters = "abcdefghijklmnopqrstuvwxyz";
  String _upperCaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  String _numbers = "0123456789";
  String _special = "@#=+!£\$%&?[](){}";
  
  //Create the empty string that will contain the allowed chars
  String _allowedChars = "";

  //Put chars on the allowed ones based on the input values
  _allowedChars += (_isWithLetters ? _lowerCaseLetters : '');
  _allowedChars += (_isWithUppercase ? _upperCaseLetters : '');
  _allowedChars += (_isWithNumbers ? _numbers : '');
  _allowedChars += (_isWithSpecial ? _special : '');

  int i = 0;
  String _result = "";

  //Create password
  while (i < _numberCharPassword.round()) {
    //Get random int
    int randomInt = Random.secure().nextInt(_allowedChars.length);
    //Get random char and append it to the password
    _result += _allowedChars[randomInt];
    i++;
  }

  return _result;
}
``` 

## How to use

All you have to do is to create a dart file with the code above, name it **password_generator.dart**, import it in your statefull or stateless widget and directly call the **generatePassword()** function

``` 
import 'password_generator.dart';

//Create a password with letters, uppercase letters, numbers but not special chars with 17 chars
String _generatedPassword = generatePassword(true, true, true, false, 17);
print(_generatedPassword);  //It's prints for example: 87nj4KUlN00GjdxoD
``` 

The app is ready to download on the Play Store using this link:  [Wassword - Wonderful Password Generator](https://play.google.com/store/apps/details?id=com.albertobonacina.wassword). 

Code strong, Alberto
