Package selection guidance compiled from public package information, community data, and project usage.
A Flutter package that enables reorderable staggered grid or list views with smooth drag-and-drop functionality. It extends the standard ListView and GridView to support dynamic reordering of items, making it ideal for task lists, image galleries, or any UI requiring user-driven item rearrangement. The package is lightweight and integrates seamlessly into existing Flutter projects. It supports both vertical and horizontal layouts and provides callbacks for handling reordering events.
Use cases
Drag-and-drop task management
Reorderable image galleries
Customizable product listings
Interactive content sorting
Dynamic form field arrangement
Key features
Staggered grid layout support
Smooth drag-and-drop reordering
Callback for reorder events
Supports vertical and horizontal layouts
Lightweight and easy integration
Suitable for
Developers building interactive lists
Apps needing sortable UI components
Projects with dynamic item ordering
UI-heavy applications with drag gestures
Flutter beginners exploring advanced widgets
Considerations
Limited to basic reordering without animations
No built-in persistence for order changes
Requires manual state management for saved order
Not optimized for very large datasets
No native support for nested reordering
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
reorderableitemsview
A Flutter package for staggered grid view or ListView with ordering support
Info
This plugin uses most for its code from ReorderableListView
@requiredthis.children, // List<Widget>@requiredthis.onReorder, // Callback onReorder(int oldIndex, int newIndex)this.scrollController, // ScrollControllerthis.scrollDirection = Axis.vertical, // Axis Ignored in GridViewthis.padding,
this.staggeredTiles, // Only used in GridView, check gridview example abovethis.crossAxisCount = 3, // Only used in GridViewthis.isGrid = false, // if true renders as gridviewthis.reverse = false,
this.longPressToDrag = true,
this.mainAxisSpacing = 0.0, // Only used in GridViewthis.crossAxisSpacing = 0.0, // Only used in GridViewthis.feedBackWidgetBuilder,