password_check
Widget Flutter para exibir, validar e personalizar requisitos de senha em tempo real, com suporte a acessibilidade e sem dependências externas.
Flutter widget for displaying, validating, and customizing password requirements in real time, with accessibility support and no external dependencies.
Português
Sobre
O password_check fornece o widget PasswordChecklist, que acompanha um
TextEditingController e mostra quais regras da senha foram atendidas. Ele
inclui regras configuráveis, mensagens personalizadas, ordenação, builders de
ícone e item, estilos e semântica acessível.
A linha 2.x preserva a API pública existente. A versão 2.1.0 requer Flutter 3.41 ou superior e Dart 3.11 ou superior.
Instalação
flutter pub add password_check
Ou adicione ao pubspec.yaml:
dependencies:
password_check: ^2.1.0
Uso básico
import 'package:flutter/material.dart';
import 'package:password_check/password_check.dart';
final controller = TextEditingController();
PasswordChecklist(
controller: controller,
minCharacters: 8,
onValidationChanged: (isValid) {
setState(() => _isPasswordValid = isValid);
},
)
onValidationChanged é chamado uma vez na montagem com a validade inicial.
Depois disso, o callback só é emitido quando a validade global muda, embora as
regras visuais continuem sendo atualizadas a cada edição. Trocas do controller
ou da configuração também recalculam o estado.
Customização
PasswordChecklist(
controller: controller,
onValidationChanged: (_) {},
checkOnlyNumbers: true,
specialCharactersRegex: RegExp(r'[!@#\$%&*]'),
validColor: Colors.teal.shade800,
invalidColor: Colors.deepOrange.shade900,
ruleOrder: const [
PasswordRuleType.uppercase,
PasswordRuleType.lowercase,
PasswordRuleType.number,
PasswordRuleType.minCharacters,
PasswordRuleType.specialCharacter,
PasswordRuleType.notOnlyNumbers,
],
customIconBuilder: (ruleId, isValid) => Icon(
isValid ? Icons.check_circle : Icons.cancel,
),
)
Os defaults visuais da linha 2.x são independentes do ThemeData: regras
válidas usam verde e negrito; regras inválidas usam vermelho e texto normal.
Forneça cores e estilos explícitos para garantir contraste com o fundo do seu
aplicativo.
Acessibilidade
No layout padrão, indicador e mensagem formam um único nó semântico com estado
marcado/desmarcado. O texto permite quebra de linha e escala 2.0 em viewports
estreitos. Ao usar itemBuilder, o consumidor assume a responsabilidade pela
semântica do conteúdo substituído.
Desenvolvimento
flutter pub get
flutter analyze
flutter test
Contribuições são bem-vindas por issues e pull requests no repositório do projeto.
English
About
password_check provides the PasswordChecklist widget, which listens to a
TextEditingController and displays which password requirements are met. It
supports configurable rules, custom messages, ordering, icon and item builders,
styles, and accessible semantics.
The 2.x line preserves the existing public API. Version 2.1.0 requires Flutter 3.41 or newer and Dart 3.11 or newer.
Installation
flutter pub add password_check
Or add it to your pubspec.yaml:
dependencies:
password_check: ^2.1.0
Basic usage
import 'package:flutter/material.dart';
import 'package:password_check/password_check.dart';
final controller = TextEditingController();
PasswordChecklist(
controller: controller,
minCharacters: 8,
onValidationChanged: (isValid) {
setState(() => _isPasswordValid = isValid);
},
)
onValidationChanged is called once on mount with the initial validity. After
that, it is emitted only when global validity changes, while individual visual
rules continue to update on every edit. Controller and configuration changes
also trigger recalculation.
Customization
PasswordChecklist(
controller: controller,
onValidationChanged: (_) {},
checkOnlyNumbers: true,
specialCharactersRegex: RegExp(r'[!@#\$%&*]'),
validColor: Colors.teal.shade800,
invalidColor: Colors.deepOrange.shade900,
ruleOrder: const [
PasswordRuleType.uppercase,
PasswordRuleType.lowercase,
PasswordRuleType.number,
PasswordRuleType.minCharacters,
PasswordRuleType.specialCharacter,
PasswordRuleType.notOnlyNumbers,
],
customIconBuilder: (ruleId, isValid) => Icon(
isValid ? Icons.check_circle : Icons.cancel,
),
)
The 2.x visual defaults are independent of ThemeData: valid rules use green
and bold text; invalid rules use red and regular text. Provide explicit colors
and styles to guarantee contrast against your application's background.
Accessibility
In the default layout, the indicator and message are merged into a single
semantic node with checked/unchecked state. Text supports wrapping and 2.0 text
scaling on narrow viewports. When using itemBuilder, the consumer is
responsible for the semantics of the replacement content.
Development
flutter pub get
flutter analyze
flutter test
Contributions are welcome through issues and pull requests in the project repository.
API / Referência
| Parâmetro / Parameter | Tipo / Type | Padrão / Default | Desde / Since |
|---|---|---|---|
controller |
TextEditingController |
obrigatório / required | 1.0.0 |
onValidationChanged |
ValueChanged<bool> |
obrigatório / required | 1.0.0 |
checkEightCharacters |
bool |
true |
1.0.0 |
checkSpecialCharacter |
bool |
true |
1.0.0 |
checkNumber |
bool |
true |
1.0.0 |
checkUppercase |
bool |
true |
1.0.0 |
checkLowercase |
bool |
true |
1.0.0 |
checkOnlyNumbers |
bool |
false |
2.0.0 |
minCharacters |
int |
8 |
1.0.0 |
specialCharactersRegex |
RegExp? |
padrão interno / internal default | 2.0.0 |
validColor |
Color? |
Colors.green |
1.0.0 |
invalidColor |
Color? |
Colors.red |
1.0.0 |
eightCharactersMessage |
String? |
pt-BR | 1.0.0 |
specialCharacterMessage |
String? |
pt-BR | 1.0.0 |
numberMessage |
String? |
pt-BR | 1.0.0 |
uppercaseMessage |
String? |
pt-BR | 1.0.0 |
lowercaseMessage |
String? |
pt-BR | 1.0.0 |
onlyNumbersMessage |
String? |
pt-BR | 2.0.0 |
customIcon |
Widget? |
null |
1.0.0 |
customIconBuilder |
Widget? Function(String, bool)? |
null |
2.0.0 |
itemSpacing |
double |
8.0 |
2.0.0 |
validTextStyle |
TextStyle? |
null |
2.0.0 |
invalidTextStyle |
TextStyle? |
null |
2.0.0 |
itemBuilder |
Widget? Function(PasswordRuleItem)? |
null |
2.0.0 |
padding |
EdgeInsetsGeometry? |
null |
2.0.0 |
margin |
EdgeInsetsGeometry? |
null |
2.0.0 |
crossAxisAlignment |
CrossAxisAlignment |
start |
2.0.0 |
mainAxisAlignment |
MainAxisAlignment |
start |
2.0.0 |
ruleOrder |
List<PasswordRuleType>? |
null |
2.0.0 |
Consulte a referência de API no pub.dev para a documentação gerada.
Licença / License
MIT — consulte / see LICENSE.