Package selection guidance compiled from public package information, community data, and project usage.
A Flutter package that enables drag-and-drop functionality for GridView.builder, allowing users to reorder items within a grid layout. It integrates seamlessly with existing grid structures without requiring significant code changes. Designed for smooth, responsive interactions across multiple platforms, it enhances user experience in apps that require customizable or interactive grid arrangements. The package is lightweight and easy to implement, making it ideal for list reordering in task managers, dashboards, or image galleries.
Use cases
Reordering items in a task list
Customizable dashboard layouts
Image gallery item rearrangement
Interactive product grids
User preference-based sorting
Draggable content management
Key features
Seamless integration with GridView.builder
Cross-platform support (Android, iOS, Web, macOS, Windows, Linux)
Smooth drag-and-drop animations
Minimal setup required
Supports custom drag handles
Preserves grid structure during reordering
Suitable for
Developers building interactive grid interfaces
Apps needing user-driven item reordering
Projects with dynamic content layouts
UX-focused applications
Teams prioritizing cross-platform consistency
Considerations
May require additional state management
Performance impact with large datasets
Limited customization for complex drag behaviors
Not suitable for non-grid scrollable widgets
Requires careful handling of item keys
Best used with small to medium-sized data sets
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
flutter_draggable_gridview
This package supports drag & drop widgets inside the GridView.builder for multiplatform. It provides all the properties which are available in Gridview.builder and easy to implement with the few lines of code.
A delegate that controls the layout of the children within the GridView.
children:
This property contains list of [DraggableGridItem] and it is use to show the widget inside the GridView.builder to provide the drag & drop functionality. Also, it contains isDraggable parameter which manages enable/disable the drag & drop functionality.
dragCompletion:
This callback provides updated list and old and new indexes.
Optional parameters
isOnlyLongPress:
This property contains bool value. If this property is false then it works with simple press draggable or else it works with long press. default value is 'true'.
dragFeedback:
With this callback, you have to return a Widget and we will use this widget in feedback. Learn more about feedback from Draggable class.
dragPlaceHolder:
TWith this callback, you have to return a PlaceHolderWidget and we will use this widget in place holder.
dragChildWhenDragging:
With this callback, you have to return a Widget and we will display this widget instead of child when drags are under way. Learn more about childWhenDragging from Draggable class.
Last But Not Least :heart_eyes:
You can use all the GridView.builder properties with DraggableGridViewBuilder class.
Note:
The result returns in List. so it can be lost later, you are responsible for storing it somewhere permanent (if needed).
Guideline for contributors
Contribution towards our repository is always welcome, we request contributors to create a pull request to the develop branch only.
Guideline to report an issue/feature request
It would be great for us if the reporter can share the below things to understand the root cause of the issue.
Library version
Code snippet
Logs if applicable
Device specification like (Manufacturer, OS version, etc)
Screenshot/video with steps to reproduce the issue
We’d be really happy if you send us links to your projects where you use our component. Just send an email to sales@mindinventory.com And do let us know if you have any questions or suggestion regarding our work.