build method

  1. @override
Widget build(
  1. BuildContext context
)
override

Implementation

@override
Widget build(BuildContext context) {
  _controller = TextEditingController(text: _format(convertTo(_value) ?? ''));

  final theme = FormThemeData.of(context);
  final child = TextFormField(
    key: key,
    focusNode: focusNode,
    controller: _controller,
    decoration: InputDecoration(
      label: PlaceholderWidget(
        label: placeholder,
        isRequired: isRequired && theme.showRequired,
      ),
      helperText: helperText,
      errorStyle: theme.requiredText?.isNotEmpty == true
          ? null
          : const TextStyle(height: 0),
      suffixIcon: _suffix,
      hintText: hintText,
    ),
    validator: (e) {
      final value = convertFrom(e);
      if (isRequired && value == null) {
        isValid = false;
        return requiredText ?? theme.requiredText;
      }
      final result = validator == null ? null : validator!(value);
      isValid = result == null;
      if (onChanged != null && !emitDirty) {
        onChanged!(_value);
      }
      return result;
    },
    onChanged: (value) {
      _onChanged(convertFrom(value));
    },
    onSaved: (value) {
      setHasChanged(false);
      if (onSaved != null) {
        onSaved!(_value);
      }
    },
    onFieldSubmitted: (_) {
      if (onSubmit != null) {
        onSubmit!();
      }
    },
    readOnly: isDisabled,
    inputFormatters: formatters ?? [],
    minLines: minLines,
    maxLines: maxLines,
    textInputAction: inputAction,
    keyboardType: keyboardType,
    autocorrect: autocorrect,
    obscureText: _obscureText,
    autofillHints: autofillHints,
  );
  return child;
}