build method

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

Implementation

@override
Widget build(BuildContext context) {
  Color effectiveColor = color ??
      (Theme.of(context).brightness == Brightness.light
          ? Theme.of(context).primaryColor
          : Theme.of(context).colorScheme.onSurface);

  return DecoratedBox(
    decoration: BoxDecoration(
      color: Theme.of(context).colorScheme.surface,
      borderRadius: BorderRadius.circular(16),
      boxShadow: <BoxShadow>[boxShadow],
    ),
    child: InkWell(
      onTap: () => onTap(item),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Padding(
                padding: const EdgeInsets.fromLTRB(16, 16, 16, 0),
                child: SizedBox(
                  height: iconSize,
                  width: iconSize,
                  child: FittedBox(
                    fit: BoxFit.fitHeight,
                    child: FaIcon(
                      iconData,
                      color: effectiveColor,
                    ),
                  ),
                ),
              ),
              if (menuItems != null && menuItems!.isNotEmpty)
                Padding(
                  padding: const EdgeInsets.only(top: 8),
                  child: PopupMenuButton<O>(
                    tooltip: tooltip ?? 'Opções do Favorito',
                    icon: const FaIcon(
                      FontAwesomeIcons.ellipsisVertical,
                      color: Colors.black12,
                    ),
                    itemBuilder: (BuildContext context) => menuItems!
                        .map((PopupIconMenuItem<O> item) => item.widget)
                        .toList(),
                    onSelected: (O operation) =>
                        onMenuSelect?.call(item, operation),
                  ),
                ),
            ],
          ),
          Padding(
            padding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
            child: Text(
              name,
              overflow: TextOverflow.ellipsis,
              maxLines: 2,
              style: TextStyle(
                color: effectiveColor,
                fontSize: fontSize,
                fontWeight: fontWeight,
              ),
            ),
          ),
        ],
      ),
    ),
  );
}