StreamSwitchStyle.from constructor

StreamSwitchStyle.from({
  1. Color? trackColor,
  2. Color? selectedTrackColor,
  3. Color? disabledTrackColor,
  4. Color? thumbColor,
  5. Color? selectedThumbColor,
  6. Color? disabledThumbColor,
  7. Color? trackOutlineColor,
  8. Color? selectedTrackOutlineColor,
  9. Color? disabledTrackOutlineColor,
  10. double? trackOutlineWidth,
  11. double? selectedTrackOutlineWidth,
  12. double? disabledTrackOutlineWidth,
  13. Color? overlayColor,
  14. Color? hoveredOverlayColor,
  15. Color? pressedOverlayColor,
})

Creates a StreamSwitchStyle from simple values.

Wraps plain colors into WidgetStateProperty values.

State-specific parameters (prefixed with selected or disabled) take precedence for their respective states; unprefixed parameters are used as the default for all other states.

{@tool snippet}

Create a style with a green track when selected:

StreamSwitchStyle.from(
  trackColor: Colors.grey,
  selectedTrackColor: Colors.green,
  disabledTrackColor: Colors.grey.shade200,
  thumbColor: Colors.white,
  hoveredOverlayColor: Colors.green.withOpacity(0.08),
  pressedOverlayColor: Colors.green.withOpacity(0.1),
)

{@end-tool}

Implementation

factory StreamSwitchStyle.from({
  Color? trackColor,
  Color? selectedTrackColor,
  Color? disabledTrackColor,
  Color? thumbColor,
  Color? selectedThumbColor,
  Color? disabledThumbColor,
  Color? trackOutlineColor,
  Color? selectedTrackOutlineColor,
  Color? disabledTrackOutlineColor,
  double? trackOutlineWidth,
  double? selectedTrackOutlineWidth,
  double? disabledTrackOutlineWidth,
  Color? overlayColor,
  Color? hoveredOverlayColor,
  Color? pressedOverlayColor,
}) {
  return StreamSwitchStyle(
    trackColor: WidgetStateUtils.resolveWith(trackColor, selectedTrackColor, disabledTrackColor),
    thumbColor: WidgetStateUtils.resolveWith(thumbColor, selectedThumbColor, disabledThumbColor),
    trackOutlineColor: WidgetStateUtils.resolveWith(
      trackOutlineColor,
      selectedTrackOutlineColor,
      disabledTrackOutlineColor,
    ),
    trackOutlineWidth: WidgetStateUtils.resolveWith(
      trackOutlineWidth,
      selectedTrackOutlineWidth,
      disabledTrackOutlineWidth,
    ),
    overlayColor: WidgetStateUtils.resolveOverlay(overlayColor, hoveredOverlayColor, pressedOverlayColor),
  );
}