menu<T> static method
Implementation
static Widget menu<T>(
BuildContext context, {
required T item,
required UAdminActionHandlers<T> handlers,
required UAdminActionBuilder<T> fallback,
UAdminActionBuilder<T>? actions,
}) {
final UAdminActionContext<T> ctx = UAdminActionContext<T>(item, handlers);
final List<UAdminAction> shown = (actions ?? fallback)(ctx).where((UAdminAction a) => a.allowed).toList();
if (shown.isEmpty) return const SizedBox.shrink();
return PopupMenuButton<String>(
icon: const Icon(Icons.more_vert),
itemBuilder: (BuildContext context) => shown.map((UAdminAction a) {
final Color? color = a.destructive ? Theme.of(context).colorScheme.error : a.color;
return PopupMenuItem<String>(
onTap: a.onTap,
child: UIconTextHorizontal(
leading: Icon(a.icon, size: 20, color: color),
trailing: Text(a.label, style: color == null ? null : TextStyle(color: color)),
),
);
}).toList(),
);
}