Carousel class

Interactive carousel widget with automatic transitions and customizable layouts.

A high-level carousel widget that displays a sequence of items with smooth transitions between them. Supports automatic progression, manual navigation, multiple transition types, and extensive customization options.

Features

  • Multiple transition types: Sliding and fading transitions with customizable timing
  • Automatic progression: Optional auto-play with configurable duration per item
  • Manual navigation: Programmatic control through CarouselController
  • Flexible sizing: Fixed or fractional size constraints for responsive layouts
  • Interactive controls: Pause on hover, wrap-around navigation, and touch gestures
  • Flexible alignment: Multiple alignment options for different layout needs
  • Directional support: Horizontal or vertical carousel orientation

Usage Patterns

Basic automatic carousel:

Carousel(
  itemCount: images.length,
  duration: Duration(seconds: 3),
  itemBuilder: (context, index) => Image.asset(images[index]),
  transition: CarouselTransition.sliding(gap: 16),
)

Controlled carousel with custom navigation:

final controller = CarouselController();

Carousel(
  controller: controller,
  itemCount: products.length,
  itemBuilder: (context, index) => ProductCard(products[index]),
  transition: CarouselTransition.fading(),
  pauseOnHover: true,
)
Inheritance
Available extensions

Constructors

Carousel({Key? key, required Widget itemBuilder(BuildContext context, int index), int? itemCount, CarouselController? controller, CarouselAlignment alignment = CarouselAlignment.center, Axis direction = Axis.horizontal, bool wrap = true, bool pauseOnHover = true, Duration? autoplaySpeed, bool waitOnStart = false, bool draggable = true, bool reverse = false, bool autoplayReverse = false, CarouselSizeConstraint sizeConstraint = const CarouselFractionalConstraint(1), Duration speed = const Duration(milliseconds: 200), Curve curve = Curves.easeInOut, Duration? duration, Duration? durationBuilder(int index)?, ValueChanged<int>? onIndexChanged, bool disableOverheadScrolling = true, bool disableDraggingVelocity = false, required CarouselTransition transition})
Creates a carousel.
const

Properties

alignment → CarouselAlignment
The carousel alignment.
final
asBuilder → NeverWidgetBuilder

Available on Widget, provided by the WidgetExtension extension

no setter
asSliver → Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
autoplayReverse → bool
Whether the carousel should autoplay in reverse.
final
autoplaySpeed → Duration?
The autoplay speed of the carousel.
final
base → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
black → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
blockQuote → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
blurIn → Widget

Available on Widget, provided by the XWidgetEffect extension

no setter
bold → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
centered → Widget

Available on Widget, provided by the XWidget extension

no setter
controller → CarouselController?
The carousel controller.
final
curve → Curve
The curve of the carousel.
final
direction → Axis
The carousel direction.
final
disableDraggingVelocity → bool
Whether to disable dragging velocity.
final
disableOverheadScrolling → bool
Whether to disable overhead scrolling.
final
draggable → bool
Whether the carousel is draggable.
final
duration → Duration?
The duration of the carousel.
final
durationBuilder → Duration? Function(int index)?
The duration builder of the carousel.
final
ellipsis → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
expand → Widget

Available on Widget, provided by the XWidget extension

no setter
extraBold → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
extraLight → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
firstP → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
flexible → Widget

Available on Widget, provided by the XWidget extension

no setter
foreground → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h1 → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h2 → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h3 → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
h4 → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
hashCode → int
The hash code for this object.
no setterinherited
ih → Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
inlineCode → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
intrinsicHeight → Widget

Available on Widget, provided by the XWidget extension

no setter
intrinsicSize → Widget

Available on Widget, provided by the XWidget extension

no setter
intrinsicWidth → Widget

Available on Widget, provided by the XWidget extension

no setter
italic → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
itemBuilder → Widget Function(BuildContext context, int index)
The item builder.
final
itemCount → int?
The item count of the carousel.
final
iw → Widget

Available on Widget, provided by the XWidgetArcane extension

no setter
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
lead → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
li → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
light → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
medium → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
modify → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
mono → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
muted → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
normal → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
onIndexChanged → ValueChanged<int>?
The index change callback.
final
p → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
pauseOnHover → bool
Whether the carousel should pause on hover.
final
primaryForeground → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
reverse → bool
Whether the carousel is reverse in layout direction.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
safeArea → Widget

Available on Widget, provided by the XWidget extension

no setter
sans → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
scrollable → Widget

Available on Widget, provided by the XWidget extension

no setter
scrollableHorizontal → Widget

Available on Widget, provided by the XWidget extension

no setter
secondaryForeground → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
semiBold → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
singleLine → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
sizeConstraint → CarouselSizeConstraint
The size constraint of the carousel.
final
small → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
speed → Duration
The speed of the carousel.
final
textCenter → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textEnd → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textJustify → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textLarge → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textLeft → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textMuted → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textRight → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textSmall → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
textStart → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
thin → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
transition → CarouselTransition
The carousel transition.
final
underline → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
waitOnStart → bool
Whether the carousel should wait the item duration on start.
final
wrap → bool
Whether the carousel should wrap.
final
x2Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x3Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x4Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x5Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x6Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x7Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x8Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
x9Large → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
xLarge → TextModifier

Available on Widget, provided by the TextExtension extension

no setter
xSmall → TextModifier

Available on Widget, provided by the TextExtension extension

no setter

Methods

animate({Key? key, List<Effect>? effects, AnimateCallback? onInit, AnimateCallback? onPlay, AnimateCallback? onComplete, bool? autoPlay, Duration? delay, AnimationController? controller, Adapter? adapter, double? target, double? value}) → Animate

Available on Widget, provided by the AnimateWidgetExtensions extension

Wraps the target Widget in an Animate instance, and returns the instance for chaining calls. Ex. myWidget.animate() is equivalent to Animate(child: myWidget).
asSkeleton({bool enabled = true, bool leaf = false, Widget? replacement, bool unite = false, AsyncSnapshot? snapshot}) → Widget

Available on Widget, provided by the SkeletonExtension extension

Converts the widget to a skeleton with advanced configuration options.
asSkeletonSliver({bool enabled = true}) → Widget

Available on Widget, provided by the SkeletonExtension extension

Converts the widget to a skeleton suitable for sliver layouts.
ast(int ml) → Widget

Available on Widget, provided by the XAST extension

center({Key? key}) → Widget

Available on Widget, provided by the WidgetExtension extension

clip({Clip clipBehavior = Clip.hardEdge}) → Widget

Available on Widget, provided by the WidgetExtension extension

clipOval({Clip clipBehavior = Clip.antiAlias}) → Widget

Available on Widget, provided by the WidgetExtension extension

clipPath({Clip clipBehavior = Clip.antiAlias, required CustomClipper<Path> clipper}) → Widget

Available on Widget, provided by the WidgetExtension extension

clipRRect({BorderRadiusGeometry borderRadius = BorderRadius.zero, Clip clipBehavior = Clip.antiAlias}) → Widget

Available on Widget, provided by the WidgetExtension extension

constrained({double? minWidth, double? maxWidth, double? minHeight, double? maxHeight, double? width, double? height}) → Widget

Available on Widget, provided by the WidgetExtension extension

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<Carousel>
Creates the mutable state for this widget at a given location in the tree.
override
debugContainer([Color color = Colors.red]) → Widget

Available on Widget, provided by the DebugContainer extension

debugDescribeChildren() → List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
excludeSkeleton({bool exclude = true}) → Widget

Available on Widget, provided by the SkeletonExtension extension

Controls whether the widget should be preserved in skeleton mode.
expanded({int flex = 1}) → Widget

Available on Widget, provided by the WidgetExtension extension

iconDestructiveForeground() → Widget

Available on Widget, provided by the IconExtension extension

iconLarge() → Widget

Available on Widget, provided by the IconExtension extension

iconMedium() → Widget

Available on Widget, provided by the IconExtension extension

iconMutedForeground() → Widget

Available on Widget, provided by the IconExtension extension

iconPrimary() → Widget

Available on Widget, provided by the IconExtension extension

iconPrimaryForeground() → Widget

Available on Widget, provided by the IconExtension extension

iconSecondary() → Widget

Available on Widget, provided by the IconExtension extension

iconSecondaryForeground() → Widget

Available on Widget, provided by the IconExtension extension

iconSmall() → Widget

Available on Widget, provided by the IconExtension extension

iconX2Large() → Widget

Available on Widget, provided by the IconExtension extension

iconX2Small() → Widget

Available on Widget, provided by the IconExtension extension

iconX3Large() → Widget

Available on Widget, provided by the IconExtension extension

iconX3Small() → Widget

Available on Widget, provided by the IconExtension extension

iconX4Large() → Widget

Available on Widget, provided by the IconExtension extension

iconX4Small() → Widget

Available on Widget, provided by the IconExtension extension

iconXLarge() → Widget

Available on Widget, provided by the IconExtension extension

iconXSmall() → Widget

Available on Widget, provided by the IconExtension extension

ignoreSkeleton() → Widget

Available on Widget, provided by the SkeletonExtension extension

Excludes the widget from skeleton effects in its parent skeleton context.
intrinsic({double? stepWidth, double? stepHeight}) → Widget

Available on Widget, provided by the WidgetExtension extension

intrinsicHeight() → Widget

Available on Widget, provided by the WidgetExtension extension

intrinsicWidth({double? stepWidth, double? stepHeight}) → Widget

Available on Widget, provided by the WidgetExtension extension

isSliver(BuildContext context) → bool

Available on Widget, provided by the XSliverWidget extension

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onDoublePressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for double press/tap gestures to this widget in Arcane UI.
onHover(void action(bool hovering)) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for hover events to this widget in Arcane UI.
onLongPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the primary button to this widget in Arcane UI.
onLongSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the secondary button to this widget in Arcane UI.
onLongTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for long press gestures with the tertiary button to this widget in Arcane UI.
onPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for primary press/tap gestures to this widget in Arcane UI.
onSecondaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for secondary press gestures (right-click) to this widget in Arcane UI.
onTertiaryPressed(VoidCallback action, {HitTestBehavior? behavior, Set<PointerDeviceKind>? supportedDevices}) → Widget

Available on Widget, provided by the XOnGestureWidget extension

Adds a handler for tertiary press gestures (middle-click) to this widget in Arcane UI.
pad(double all) → Widget

Available on Widget, provided by the XWidget extension

padBottom(double value) → Widget

Available on Widget, provided by the XWidget extension

padBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) → Widget

Available on Widget, provided by the XWidgetArcane extension

padHorizontal(double value) → Widget

Available on Widget, provided by the XWidgetArcane extension

padLeft(double value) → Widget

Available on Widget, provided by the XWidget extension

padOnly({double left = 0, double top = 0, double right = 0, double bottom = 0}) → Widget

Available on Widget, provided by the XWidget extension

padRight(double value) → Widget

Available on Widget, provided by the XWidget extension

padSliverBy({double? left, double? top, double? right, double? bottom, double? horizontal, double? vertical}) → Widget

Available on Widget, provided by the XWidgetArcane extension

padSliverHorizontal(double value) → Widget

Available on Widget, provided by the XWidgetArcane extension

padTop(double value) → Widget

Available on Widget, provided by the XWidget extension

positioned({Key? key, double? left, double? top, double? right, double? bottom}) → Widget

Available on Widget, provided by the WidgetExtension extension

shadeEdge(double radius) → Widget

Available on Widget, provided by the XWidgetEdge extension

shadeFrost(double value) → Widget

Available on Widget, provided by the XWidgetFrost extension

shadeInvert() → Widget

Available on Widget, provided by the XWidgetInvert extension

shadePixelate(double radius) → Widget

Available on Widget, provided by the XWidgetPixelate extension

shadePixelateBlur({int samples = 4, double pixelSize = 8, double radius = 2}) → Widget

Available on Widget, provided by the XWidgetPixelateBlur extension

shadeRGB({double radius = 5, double spin = 1}) → Widget

Available on Widget, provided by the XWidgetRGB extension

shadeWarp({double amplitude = 1, double frequency = 1, double z = 1, int octaves = 2}) → Widget

Available on Widget, provided by the XWidgetWarp extension

shadeWarpAnimation({double amplitude = 1, double frequency = 1, double z = 1, double zSpeed = 1, int octaves = 2}) → Widget

Available on Widget, provided by the XWidgetWarp extension

shimmer({bool loading = true}) → Widget

Available on Widget, provided by the XWidgetArcane extension

sized({double? width, double? height}) → Widget

Available on Widget, provided by the WidgetExtension extension

sized({double? width, double? height}) → Widget

Available on Widget, provided by the XWidget extension

then(InlineSpan span) → Widget

Available on Widget, provided by the TextExtension extension

thenButton({required VoidCallback onPressed, required Widget child}) → Widget

Available on Widget, provided by the TextExtension extension

thenInlineCode(String text) → Widget

Available on Widget, provided by the TextExtension extension

thenText(String text) → Widget

Available on Widget, provided by the TextExtension extension

toBox(BuildContext context, {bool softWarn = true}) → Widget

Available on Widget, provided by the XSliverWidget extension

toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toSliver(BuildContext context, {bool fillRemaining = false, bool softWarn = true}) → Widget

Available on Widget, provided by the XSliverWidget extension

toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) → String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String
Returns a one-line detailed description of the object.
inherited
toStringShort() → String
A short, textual description of this widget.
inherited
transform({Key? key, required Matrix4 transform}) → Widget

Available on Widget, provided by the WidgetExtension extension

withAlign(AlignmentGeometry alignment) → Widget

Available on Widget, provided by the WidgetExtension extension

withMargin({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all}) → Widget

Available on Widget, provided by the WidgetExtension extension

withOpacity(double opacity) → Widget

Available on Widget, provided by the WidgetExtension extension

withPadding({double? top, double? bottom, double? left, double? right, double? horizontal, double? vertical, double? all, EdgeInsetsGeometry? padding}) → Widget

Available on Widget, provided by the WidgetExtension extension

withTooltip(String tooltip) → Widget

Available on Widget, provided by the XWidgetArcane extension

Operators

operator ==(Object other) → bool
The equality operator.
inherited