import
'package:flutter/material.dart'
;
void
main() {
runApp(MyApp());
}
class
MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return
MaterialApp(
theme: ThemeData(
primarySwatch: Colors.green,
),
debugShowCheckedModeBanner:
false
,
home: PasswordValidator(),
);
}
}
class
PasswordValidator extends StatefulWidget {
@override
_PasswordValidatorState createState() => _PasswordValidatorState();
}
class
_PasswordValidatorState extends State<PasswordValidator> {
TextEditingController _passwordController = TextEditingController();
bool
_isValid =
false
;
String _errorMessage =
''
;
@override
Widget build(BuildContext context) {
return
Scaffold(
appBar: AppBar(
title: Text(
'Password Validator'
),
),
body: Padding(
padding:
const
EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: _passwordController,
obscureText:
true
,
decoration: InputDecoration(
labelText:
'Enter Password'
,
),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
setState(() {
_isValid = _validatePassword(_passwordController.text);
});
},
child: Text(
'Validate Password'
),
),
SizedBox(height: 20),
_isValid
? Text(
'Password is valid!'
,
style: TextStyle(color: Colors.green),
)
: Text(
'Password is not valid!\n'
'• $_errorMessage'
,
style: TextStyle(color: Colors.red),
),
],
),
),
);
}
bool
_validatePassword(String password) {
_errorMessage =
''
;
if
(password.length <6) {
_errorMessage +=
'Password must be longer than 6 characters.\n'
;
}
if
(!password.contains(RegExp(r
'[A-Z]'
))) {
_errorMessage +=
'• Uppercase letter is missing.\n'
;
}
if
(!password.contains(RegExp(r
'[a-z]'
))) {
_errorMessage +=
'• Lowercase letter is missing.\n'
;
}
if
(!password.contains(RegExp(r
'[0-9]'
))) {
_errorMessage +=
'• Digit is missing.\n'
;
}
if
(!password.contains(RegExp(r
'[!@#%^&*(),.?":{}|<>]'
))) {
_errorMessage +=
'• Special character is missing.\n'
;
}
return
_errorMessage.isEmpty;
}
}