buildInputDecoration method

InputDecoration buildInputDecoration(
  1. BuildContext context,
  2. Set<WidgetState> states, {
  3. bool expands = false,
  4. Widget? beforePostWidget,
  5. Widget? beforePreWidget,
  6. String? label,
  7. String? placeholder,
  8. String? tag,
  9. String? helperText,
  10. List<String>? errors,
  11. bool isRequired = false,
  12. VoidCallback? onClear,
  13. Widget? infoIcon,
  14. FloatingLabelAlignment? labelAlignment,
})

Implementation

InputDecoration buildInputDecoration(
  BuildContext context,
  Set<WidgetState> states, {
  bool expands = false,
  Widget? beforePostWidget,
  Widget? beforePreWidget,
  String? label,
  String? placeholder,
  String? tag,
  String? helperText,
  List<String>? errors,
  bool isRequired = false,
  VoidCallback? onClear,
  Widget? infoIcon,
  FloatingLabelAlignment? labelAlignment,
}) {
  final inputBorder = buildInputBorder(states);

  final isFilled = decorationType == TInputDecorationType.filled;

  final fillColor = backgroundColor != null ? backgroundColor!.resolve(states) : _defaultBackgroundColor(decorationType, states, context);

  return InputDecoration(
    border: inputBorder,
    enabledBorder: inputBorder,
    focusedErrorBorder: inputBorder,
    disabledBorder: inputBorder,
    focusedBorder: inputBorder,
    errorBorder: inputBorder,
    contentPadding: fieldPadding,
    constraints: BoxConstraints(
      minHeight: fieldHeight,
      maxHeight: expands ? double.infinity : fieldHeight,
    ),
    label: labelPosition == TLabelPosition.aboveField ? null : labelBuilder.resolve(states)(label, tag, isRequired, null),
    labelStyle: labelStyle.resolve(states),
    floatingLabelStyle: floatingLabelStyle.resolve(states),
    floatingLabelAlignment: labelAlignment,
    floatingLabelBehavior: switch (labelPosition) {
      TLabelPosition.aboveField => FloatingLabelBehavior.never,
      TLabelPosition.floating || TLabelPosition.inlineFloating => FloatingLabelBehavior.auto,
    },
    isDense: true,
    visualDensity: VisualDensity.compact,
    hintText: placeholder,
    hintStyle: hintStyle.resolve(states),
    prefixIconConstraints: BoxConstraints(minHeight: fieldHeight - fieldPadding.vertical, minWidth: fieldPadding.left),
    prefixIcon: _buildPreWidget(beforePreWidget),
    suffixIconConstraints: BoxConstraints(minHeight: fieldHeight - fieldPadding.vertical, minWidth: fieldPadding.right),
    suffixIcon: _buildPostWidget(
      beforePostWidget: beforePostWidget,
      onClear: onClear,
      infoIcon: labelPosition == TLabelPosition.floating || labelPosition == TLabelPosition.inlineFloating ? infoIcon : null,
    ),
    filled: isFilled,
    fillColor: fillColor,
    focusColor: fillColor,
    hoverColor: fillColor,
  );
}