GTextField.confirmPassword constructor

GTextField.confirmPassword({
  1. Key? key,
  2. String? name,
  3. TextEditingController? controller,
  4. String? initialValue,
  5. TextEditingController? passwordController,
  6. String? passwordName,
  7. String label = 'Confirm password',
  8. String hint = 'Re-enter your password',
  9. TextInputAction textInputAction = TextInputAction.done,
  10. List<TextInputFormatter>? inputFormatters,
  11. ConfirmPasswordValidationConfig validationConfig = const ConfirmPasswordValidationConfig(),
  12. ValidationMessageResolver<ConfirmPasswordValidationIssue> validationMessageResolver = resolveConfirmPasswordValidationIssue,
  13. GFormValidator? validator,
  14. GTextFieldConfig configure(
    1. GTextFieldConfig config
    )?,
  15. void onChanged(
    1. String
    )?,
  16. void onFieldSubmitted(
    1. String
    )?,
  17. void onSaved(
    1. String?
    )?,
  18. IconData? prefixIcon,
  19. FocusNode? focusNode,
  20. AutovalidateMode? autovalidateMode,
  21. bool? enabled,
  22. bool readOnly = false,
  23. int? maxLength,
  24. TextAlign textAlign = TextAlign.start,
  25. TextStyle? style,
  26. Iterable<String>? autofillHints = const [AutofillHints.password],
  27. InputDecoration? decoration,
})

Implementation

factory GTextField.confirmPassword({
  Key? key,
  String? name,
  TextEditingController? controller,
  String? initialValue,
  TextEditingController? passwordController,
  String? passwordName,
  String label = 'Confirm password',
  String hint = 'Re-enter your password',
  TextInputAction textInputAction = TextInputAction.done,
  List<TextInputFormatter>? inputFormatters,
  ConfirmPasswordValidationConfig validationConfig =
      const ConfirmPasswordValidationConfig(),
  ValidationMessageResolver<ConfirmPasswordValidationIssue>
      validationMessageResolver =
      resolveConfirmPasswordValidationIssue,
  GFormValidator? validator,
  GTextFieldConfig Function(GTextFieldConfig config)? configure,
  void Function(String)? onChanged,
  void Function(String)? onFieldSubmitted,
  void Function(String?)? onSaved,
  IconData? prefixIcon,
  FocusNode? focusNode,
  AutovalidateMode? autovalidateMode,
  bool? enabled,
  bool readOnly = false,
  int? maxLength,
  TextAlign textAlign = TextAlign.start,
  TextStyle? style,
  Iterable<String>? autofillHints = const [AutofillHints.password],
  InputDecoration? decoration,
}) {
  assert(
    passwordController != null || passwordName != null,
    'Provide either passwordController or passwordName.',
  );

  GFormValidator confirmValidator(TextEditingController passwordController) {
    return (value) {
      final message = ConfirmPasswordValidator(validationConfig)
          .validate(
            password: passwordController.text,
            confirmation: value ?? '',
          )
          .fold(validationMessageResolver, (_) => null);
      return message ?? validator?.call(value);
    };
  }

  final config = GTextFieldConfig(
    controller: controller,
    name: name,
    initialValue: initialValue,
    label: label,
    hint: hint,
    keyboardType: TextInputType.visiblePassword,
    textInputAction: textInputAction,
    inputFormatters: inputFormatters,
    validator:
        passwordController == null
            ? null
            : confirmValidator(passwordController),
    onChanged: onChanged,
    onFieldSubmitted: onFieldSubmitted,
    onSaved: onSaved,
    prefixIcon: prefixIcon ?? Icons.lock,
    focusNode: focusNode,
    autovalidateMode: autovalidateMode,
    enabled: enabled,
    readOnly: readOnly,
    obscureText: true,
    autocorrect: false,
    enableSuggestions: false,
    maxLength: maxLength,
    textAlign: textAlign,
    style: style,
    autofillHints: autofillHints,
    decoration: decoration,
  );

  return GTextField(
    key: key,
    config: configure?.call(config) ?? config,
    obscurable: true,
    resolveConfig:
        passwordName == null
            ? null
            : (context, config) {
              final controller = GForm.controllerOf(
                context,
              ).textController(passwordName);
              return config.copyWith(validator: confirmValidator(controller));
            },
  );
}