of static method

Returns the nearest ContextMenuTheme.

Implementation

static ContextMenuThemeData of(BuildContext context) {
  final ContextMenuTheme? contextMenuTheme =
      context.dependOnInheritedWidgetOfExactType<ContextMenuTheme>();
  ContextMenuThemeData? contextMenuThemeData = contextMenuTheme?.data;

  if (contextMenuThemeData == null || !contextMenuThemeData._isConcrete) {
    final ThemeData themeData = Theme.of(context);
    final TextTheme textTheme = themeData.textTheme;
    final ColorScheme colorScheme = themeData.colorScheme;

    contextMenuThemeData ??= themeData.contextMenuTheme;

    final contextMenuValue =
        _ContextMenuThemeData(textTheme: textTheme, colorScheme: colorScheme);

    final IconThemeData iconThemeData =
        contextMenuThemeData.iconThemeData ?? contextMenuValue.iconThemeData;
    final double menuWidthStep =
        contextMenuThemeData.menuWidthStep ?? contextMenuValue.menuWidthStep;
    final double itemHeight =
        contextMenuThemeData.itemHeight ?? contextMenuValue.itemHeight;
    final double minMenuWidth =
        contextMenuThemeData.minMenuWidth ?? contextMenuValue.minMenuWidth;
    final double maxMenuWidth =
        contextMenuThemeData.maxMenuWidth ?? contextMenuValue.maxMenuWidth;
    final double menuHorizontalPadding =
        contextMenuThemeData.menuHorizontalPadding ??
            contextMenuValue.menuHorizontalPadding;
    final TextStyle textStyle =
        contextMenuThemeData.textStyle ?? contextMenuValue.textStyle;
    final Color selectedColor =
        contextMenuThemeData.selectedColor ?? contextMenuValue.selectedColor;
    final Color selectedHighlightColor =
        contextMenuThemeData.selectedHighlightColor ??
            contextMenuValue.selectedHighlightColor;
    final Color selectedHoverColor =
        contextMenuThemeData.selectedHoverColor ??
            contextMenuValue.selectedHoverColor;
    final Color selectedForeground =
        contextMenuThemeData.selectedForeground ??
            contextMenuValue.selectedForeground;
    final Color hoverColor =
        contextMenuThemeData.hoverColor ?? contextMenuValue.hoverColor;
    final Color highlightColor = contextMenuThemeData.highlightColor ??
        contextMenuValue.highlightColor;
    final Color background =
        contextMenuThemeData.background ?? contextMenuValue.background;
    final Color color = contextMenuThemeData.color ?? contextMenuValue.color;

    return contextMenuThemeData.copyWith(
      iconThemeData: iconThemeData,
      menuWidthStep: menuWidthStep,
      itemHeight: itemHeight,
      minMenuWidth: minMenuWidth,
      maxMenuWidth: maxMenuWidth,
      menuHorizontalPadding: menuHorizontalPadding,
      textStyle: textStyle,
      selectedColor: selectedColor,
      selectedHighlightColor: selectedHighlightColor,
      selectedHoverColor: selectedHoverColor,
      selectedForeground: selectedForeground,
      hoverColor: hoverColor,
      highlightColor: highlightColor,
      background: background,
      color: color,
    );
  }

  assert(contextMenuThemeData._isConcrete);

  return contextMenuThemeData;
}