customWidget static method

Widget customWidget(
  1. BuildContext context,
  2. M3EMenuWidget item, {
  3. required bool autofocus,
  4. required bool closeOnSelect,
  5. required M3EMenuTheme menuTheme,
  6. required M3EMenuSelectCallback onSelect,
})

customWidget.

Implementation

static Widget customWidget(
  BuildContext context,
  M3EMenuWidget item, {
  required bool autofocus,
  required bool closeOnSelect,
  required M3EMenuTheme menuTheme,
  required M3EMenuSelectCallback onSelect,
}) {
  final scheme = M3ETheme.of(context).colorScheme;
  final style = M3EMenuStyleScope.styleOf(context);
  final palette =
      M3EMenuStyleScope.colorsOf(context) ?? menuTheme.colors(scheme, style);
  final radius = menuTheme.itemShape(item.shape);
  final background = item.selected
      ? palette.selectedContainer
      : const Color(0x00000000);
  return Padding(
    padding: EdgeInsets.symmetric(vertical: menuTheme.itemGap / 2),
    child: M3ETappable(
      enabled: item.enabled,
      autofocus: autofocus,
      semanticLabel: item.semanticLabel,
      onTap: item.enabled
          ? () {
              item.onPressed?.call();
              if (closeOnSelect || item.value != null) {
                onSelect(item.value);
              }
            }
          : null,
      builder: (BuildContext context, M3EInteractionState state) {
        return _customWidgetBody(
          context,
          item,
          menuTheme: menuTheme,
          scheme: scheme,
          style: style,
          palette: palette,
          radius: radius,
          background: background,
          state: state,
        );
      },
    ),
  );
}