build method
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,
),
),
),
],
),
),
);
}