Skip to content

Steppers

A customizable stepper component for incrementing and decrementing numeric values.

The Steppers widget provides a flexible UI for numeric input with customizable add/remove buttons, value constraints, and various styling options. It includes multiple static constructors for common stepper styles.

  • Stepper Types: Outline, Round Button, Outline Round Button, Minimal.
  • States: Disabled, Interactive.
  • Customizable: Supports custom widgets, colors, dimensions, and constraints.

A stepper with outline styling and border container.


A stepper with circular button controls.


A stepper combining outline container with round button controls.


A compact stepper with minimal styling and vertical divider.


A stepper in disabled state that cannot be interacted with.


PropertyTypeDescription
valueintThe current numeric value displayed in the stepper. Defaults to 0.
minintThe minimum value that can be set. Value cannot go below this number. Defaults to 0.
maxint?The maximum value that can be set. If null, there is no upper limit.
onAddvoid Function()?Callback function when the add button is pressed to increment the value.
onRemovevoid Function()?Callback function when the remove button is pressed to decrement the value.
widgetAddWidget?Custom widget to display as the add button. If null, uses default add icon.
widgetRemoveWidget?Custom widget to display as the remove button. If null, uses default remove icon.
widthdoubleThe width allocated for displaying the numeric value. Defaults to 40.
heightdouble?The height of the stepper component.
spacingdoubleThe spacing between the remove button, value display, and add button. Defaults to 8.
styleTextStyle?Custom text style for the displayed value.
isMinimalboolWhether to use minimal style with a vertical divider instead of value display. Defaults to false.
disabledboolWhether the stepper is disabled and cannot be interacted with. Defaults to false.

Additional properties for the outline variant:

PropertyTypeDescription
borderBoxBorder?Custom border for the container. If null, uses default gray border.
paddingEdgeInsetsGeometry?Padding inside the container. Defaults to EdgeInsets.fromLTRB(8, 5, 8, 5).
borderRadiusBorderRadiusGeometry?Border radius for the container. Defaults to BorderRadius.all(Radius.circular(100)).

Additional properties for the outline round button variant:

PropertyTypeDescription
borderBoxBorder?Custom border for the container. If null, uses default gray border.
paddingEdgeInsetsGeometry?Padding inside the container. Defaults to EdgeInsets.all(8).
borderRadiusBorderRadiusGeometry?Border radius for the container. Defaults to BorderRadius.all(Radius.circular(100)).

Additional properties for the minimal variant:

PropertyTypeDescription
borderBoxBorder?Custom border for the container. If null, uses default gray border.
paddingEdgeInsetsGeometry?Padding inside the container. Defaults to EdgeInsets.symmetric(horizontal: 8).
borderRadiusBorderRadiusGeometry?Border radius for the container. Defaults to BorderRadius.all(Radius.circular(100)).