elevation method

double elevation(
  1. M3EButtonStyle style,
  2. Set<WidgetState> states
)

elevation.

Matches Material 3 elevated / filled / tonal button elevation tokens (material_ui defaults): elevated stays at level 1 while pressed.

Implementation

double elevation(M3EButtonStyle style, Set<WidgetState> states) {
  final hovered = states.contains(WidgetState.hovered);
  final pressed = states.contains(WidgetState.pressed);
  final disabled = states.contains(WidgetState.disabled);
  if (disabled) {
    return 0;
  }
  switch (style) {
    case M3EButtonStyle.elevated:
      return _elevatedElevation(pressed: pressed, hovered: hovered);
    case M3EButtonStyle.filled:
    case M3EButtonStyle.tonal:
      if (pressed) {
        return 0;
      }
      if (hovered) {
        return 1;
      }
      return 0;
    case M3EButtonStyle.outlined:
    case M3EButtonStyle.text:
      return 0;
  }
}