buildDefaultLabelBuilder static method

WidgetStateProperty<LabelBuilder> buildDefaultLabelBuilder(
  1. WidgetStateProperty<TextStyle> labelStyle,
  2. WidgetStateProperty<TextStyle> tagStyle,
  3. WidgetStateProperty<TextStyle> errorTextStyle
)

Implementation

static WidgetStateProperty<LabelBuilder> buildDefaultLabelBuilder(
  WidgetStateProperty<TextStyle> labelStyle,
  WidgetStateProperty<TextStyle> tagStyle,
  WidgetStateProperty<TextStyle> errorTextStyle,
) {
  return WidgetStateProperty.resolveWith((states) {
    return (label, tag, isRequired, infoIcon) {
      final children = [
        if (label != null)
          RichText(
            text: TextSpan(
              text: label,
              style: labelStyle.resolve(states),
              children: isRequired ? [TextSpan(text: ' *', style: TextStyle(color: errorTextStyle.resolve(states).color))] : null,
            ),
          ),
        if (tag != null) Text(tag, style: tagStyle.resolve(states)),
        if (infoIcon != null) infoIcon,
      ];

      if (children.isEmpty) return SizedBox.shrink();
      if (children.length == 1) return children[0];

      return Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisSize: MainAxisSize.min,
        spacing: 3,
        children: children,
      );
    };
  });
}