NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4041 most downloaded on pub.dev
A customizable Flutter marquee widget with multi-direction scrolling, user interactions, and programmatic control.
Last release 4 months ago
14 May 2026
Release timing varies
gaps range from 3 weeks to 8 months
Most releases are documented
notes for 30 of 35 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
35 releases · first in 2022
One column per quarter.
Fixed scrollablePointerIgnoring not working after the first animation loop on recent Flutter versions \ Replaced one-shot _searchIgnorePointer call wi
Fixed scrollablePointerIgnoring not working after the first animation loop on recent Flutter versions
Replaced one-shot _searchIgnorePointer call with a cached RenderIgnorePointer reference that is re-applied on every new scroll activity via isScrollingNotifier
Tree traversal now runs only once thanks to caching, keeping performance unchanged
Removed dart:io import; platform detection now uses defaultTargetPlatform so the package compiles cleanly on Flutter Web
Added async error handling for ScrollController.animateTo so unhandled future errors no longer crash the zone
didUpdateWidget now syncs widget.interaction to the internal field at runtime
didUpdateWidget now resets scroll offset and restarts the loop when direction changes, preventing visual glitches caused by stale offsets on the new axis
Fixed children update issue by ensuring proxy delegate updates and resetting measured size on widget rebuilds \
Fixed children update issue by ensuring proxy delegate updates and resetting measured size on widget rebuilds \
Fixed content update issue (e.g. text color changes) by disabling delegate caching when intrinsicCrossAxisSize is false \
Fixed content update issue (e.g. text color changes) by disabling delegate caching when intrinsicCrossAxisSize is false \
Fixed animation interruption when parent widget rebuilds via setState \ Added delegate caching to prevent unnecessary recreation on parent rebuilds \
Fixed animation interruption when parent widget rebuilds via setState
Added delegate caching to prevent unnecessary recreation on parent rebuilds
Added recalculateIntrinsicSize() to controller for manual size recalculation
Animation now only restarts when pps, direction, or infinity parameters change
Added intrinsicCrossAxisSize parameter - Auto-sizes cross axis based on child widget, no SizedBox wrapper needed \ Added offset getter to MarqueerCont
Added intrinsicCrossAxisSize parameter - Auto-sizes cross axis based on child widget, no SizedBox wrapper needed
Added offset getter to MarqueerController for reading current scroll position
Added hasClients guards to run(), stop(), and scrollListener() for safer lifecycle handling
Improved autoStart behavior with intrinsicCrossAxisSize - animation starts after measurement completes
Added clipBehavior parameter to Marqueer and Marqueer.builder constructors for customizable clipping behavior
Added clipBehavior parameter to Marqueer and Marqueer.builder constructors for customizable clipping behavior
Added MeasureSize widget - A helper widget using RenderProxyBox to efficiently measure child widget sizes \ Improved example with advanced dynamic hei
Added MeasureSize widget - A helper widget using RenderProxyBox to efficiently measure child widget sizes
Improved example with advanced dynamic height pattern using MeasureSize and Stack
Enhanced documentation with practical use cases for dynamic sizing
Fixed memory leak in scrollListener where listeners were added multiple times \ Optimized _searchIgnorePointer performance by caching result \ Added d
Fixed memory leak in scrollListener where listeners were added multiple times
Optimized _searchIgnorePointer performance by caching result
Added debug logging to animation error catch block
Removed unused viewportDimension variable
Improved code consistency in constructor parameters
Fixed Cannot get renderObject of inactive element error by guarding access with mounted check \ Fixed ScrollController not attached to any scroll view
Fixed Cannot get renderObject of inactive element error by guarding access with mounted check
Fixed ScrollController not attached to any scroll views error during dispose lifecycle
Simplified and improved documentation across all classes and methods \ Added _cancelAllTimers() helper method for cleaner timer management \ Fixed mem
Simplified and improved documentation across all classes and methods
Added _cancelAllTimers() helper method for cleaner timer management
Fixed memory leak in scroll listener by properly removing listeners in dispose
Improved code consistency and readability
Enhanced code documentation with comprehensive inline comments for all public APIs \ Improved type safety by adding explicit type annotations \ Fixed
Enhanced code documentation with comprehensive inline comments for all public APIs
Improved type safety by adding explicit type annotations
Fixed potential memory leak in didChangeMetrics method
Optimized timer management in stop() method
Enhanced platform detection logic for better cross-platform support
Updated pubspec.yaml description for better package discoverability
Updated Readme.md Fixed didChangeMetrics bug
Updated Readme.md
Fixed didChangeMetrics bug
Refactored and cleared code-base.
Refactored and cleared code-base.
Added edgeDuration
Added interactionsChangesAnimationDirection
Hidden web and desktop scrollbar
Removed MouseRegion from widget hierarchy
Added hitTestBehavior support \ Added scrollablePointerIgnoring for handle touch at first time, fixed #15 #13
Switched to very_good_analysis for lint added minor descriptions to code base
Switched to very_good_analysis for lint added minor descriptions to code base
Updated lint version to 3.*\ Updated preview gif
Updated lint version to 3.*
Updated preview gif
Added vertical direction support. #11
Added vertical direction support. #11 <br/>
note: don't forget child height when using marqueer on vertical.
enum MarqueerDirection {
/// Right to Left
rtl,
/// Left to Right
ltr,
/// Top to Bottom
ttb,
/// Bottom to Top
btt,
}
Added mouse swipe support for web #10
Added mouse swipe support for web #10
Added forward() and backward() methods to controller.
Added forward() and backward() methods to controller.
Fixed issue 5.\ Breaking change: updated Widget? separator argument to Widget separatorBuilder(BuildContext, int) method.\ Added padding argument. See…
Fixed issue 5.
Breaking change: updated Widget? separator argument to Widget separatorBuilder(BuildContext, int) method.
Added padding argument. See README.md
Updated example screen widgets\ Cleaned up example project.
Updated example screen widgets
Cleaned up example project.
Added Marqueer.builder for dynamic item build. #1
Added Marqueer.builder for dynamic item build. #1
Fixed misspelled variable names. (thanks @Aboidrees)
Fixed misspelled variable names. (thanks @Aboidrees)
Improved desktop and web support.
Improved desktop and web support.
p## 1.1.1
Added autoStartAfter property to Marquuer widget for auto start after specific duration
Nothing published for this version
Fixed wrong distance calculation with no-infinity widget. When ScrollDirection.idle. Added isAnimating getter to MarqueerController. MarqueerControlle
Fixed wrong distance calculation with no-infinity widget. When ScrollDirection.idle.
Added isAnimating getter to MarqueerController.
MarqueerController splitted to own file.
Updated /example
Nothing published for this version
Nothing published for this version
Fix typo
Fix typo
Add Preview gif
Add Preview gif
Nothing published for this version
Nothing published for this version
Updated example project Fixed direction bug Added infinite option
Updated example project
Fixed direction bug
Added infinite option
Add hasClients getter to MarqueerController Update README.md
Add hasClients getter to MarqueerController
Update README.md
initial release.
initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →