EmailInput constructor

EmailInput({
  1. Key? key,
  2. bool enabled = true,
  3. AutovalidateMode? autovalidateMode,
  4. String? initialValue,
  5. FormFieldSetter<String>? onSaved,
  6. FormFieldValidator<String>? validator,
  7. required TextEditingController controller,
  8. BoxConstraints? constraints,
  9. String labelText = "Email",
  10. bool readOnly = false,
  11. dynamic onChanged(
    1. String
    )?,
  12. List<TextInputFormatter>? inputFormatters,
  13. Widget? prefix,
  14. Widget? prefixIcon,
  15. Widget? suffix,
  16. Widget? suffixIcon,
})

Implementation

EmailInput({
  super.key,
  super.enabled,
  super.autovalidateMode,
  super.initialValue,
  super.onSaved,
  super.validator,
  required this.controller,
  this.constraints,
  this.labelText = "Email",
  this.readOnly = false,
  this.onChanged,
  this.inputFormatters,
  this.prefix,
  this.prefixIcon,
  this.suffix,
  this.suffixIcon,
}) : super(
        builder: (field) {
          return TextFormField(
            enabled: enabled,
            autovalidateMode: autovalidateMode,
            initialValue: initialValue,
            controller: controller,
            readOnly: readOnly,
            onChanged: onChanged,
            inputFormatters: inputFormatters,
            validator: validator ??
                (value) {
                  if (value == null || value.isEmpty) {
                    return 'Please enter a valid email address. Ex. testemail@hotmail.com';
                  }

                  var emailRegex = RegExp(r'\w+@\w+\.\w');
                  if (!emailRegex.hasMatch(value)) {
                    return 'Please enter email in the form "testemail@hotmail.com"';
                  }

                  return null;
                },
            decoration: InputDecoration(
                labelText: labelText,
                constraints: constraints,
                border: const OutlineInputBorder(),
                prefix: prefix,
                prefixIcon: prefixIcon,
                suffix: suffix,
                suffixIcon: suffixIcon),
          );
        },
      );