buildItem method

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

Builds the button using the item theme provided by its host bar.

Implementation

@override
Widget buildItem(BuildContext context) {
  final label = this.label;
  final key = id == null ? null : ValueKey<String>('fdc-grid-button-$id');
  final itemTheme = FdcGridItemTheme.maybeOf(context);
  final enabled = onPressed != null;
  final iconColor = enabled
      ? itemTheme?.iconColor
      : itemTheme?.disabledIconColor;
  final textColor = enabled
      ? itemTheme?.textColor
      : itemTheme?.disabledTextColor;
  final textStyle = itemTheme?.textStyle.copyWith(color: textColor);

  final child = label == null
      ? IconButton(
          key: key,
          icon: Icon(icon, color: iconColor),
          iconSize: 16,
          visualDensity: VisualDensity.compact,
          splashRadius: 18,
          constraints: const BoxConstraints.tightFor(width: 32, height: 32),
          onPressed: onPressed,
        )
      : TextButton.icon(
          key: key,
          icon: Icon(icon, size: 16, color: iconColor),
          label: Text(label, style: textStyle),
          style: TextButton.styleFrom(
            foregroundColor: textColor,
            disabledForegroundColor: itemTheme?.disabledTextColor,
            visualDensity: VisualDensity.compact,
            minimumSize: const Size(32, 32),
            padding: const EdgeInsets.symmetric(horizontal: 8),
          ),
          onPressed: onPressed,
        );

  if (tooltip == null) {
    return child;
  }

  return Tooltip(message: tooltip!, excludeFromSemantics: true, child: child);
}