menu<T> static method

Widget menu<T>(
  1. BuildContext context, {
  2. required T item,
  3. required UAdminActionHandlers<T> handlers,
  4. required UAdminActionBuilder<T> fallback,
  5. UAdminActionBuilder<T>? actions,
})

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(),
  );
}