flutter_reorderable_grid_view
Enables animated GridViews when updating children or when trying to reorder them by using drag and drop.
5.7.0
34K downloads/mo
#1760 most downloaded on pub.dev
karvulf/flutter-reorderable-grid-view
What this package is like to depend on
Last release 2 months ago
31 May 2026
Release timing varies
gaps range from 2 weeks to 5 months
Nearly every release is documented
notes for 48 of 48 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
72 releases · first in 2021
4 releases in the last 12 months
see the full history below
Release timeline
72 releases · Oct 2021 to May 2026Releases
latest 60 of 72-
5.7.031 May 2026Release notes
Open source →⭐️ New Features
- added animation curve support to
ReorderableAnimationConfig(thanks for the request toWD-J, see #171) - added new curve parameters:
positionChangeCurvedraggingPositionChangeCurvereleasedItemCurvefadeInCurvedragFeedbackCurvedefaultAnimationCurve
- all animations now support curve fallback behavior:
- use specific curve if set
- otherwise use
defaultAnimationCurve
⚡️ Breaking Changes
- removed direct duration parameters from
ReorderableBuilderandReorderableBuilder.builder - use
animationConfiginstead:positionDuration->animationConfig.positionChangeDurationreleasedChildDuration->animationConfig.releasedItemDurationfadeInDuration->animationConfig.fadeInDuration
- added animation curve support to
-
5.6.015 Mar 2026Release notes
Open source →⭐️ New Features
- added new
animationConfigparameter toReorderableBuilderandReorderableBuilder.builder - added
ReorderableAnimationConfigto centralize animation-related configuration ReorderableAnimationConfignow contains the animation durations:positionChangeDurationdraggingPositionChangeDurationreleasedItemDurationfadeInDurationdragFeedbackDuration
⚠️ Deprecations
- deprecated direct animation duration parameters in
ReorderableBuilderin favor ofanimationConfig:positionDuration->animationConfig.positionChangeDurationreleasedChildDuration->animationConfig.releasedItemDurationfadeInDuration->animationConfig.fadeInDuration
- deprecated
enableLongPress- to start dragging immediately, set
longPressDelaytoDuration.zero
- to start dragging immediately, set
- added new
-
5.5.316 Feb 2026Release notes
Open source →🐛 Bug Fixes
- performance issue fixed while scrolling (thanks to
stanbavfor the PR, see #166)
🏄♂️ Improvements
- updated
androidfolder in example project to the flutter version3.38.9
- performance issue fixed while scrolling (thanks to
-
5.5.203 Nov 2025Release notes
Open source →🐛 Bug Fixes
- fixed an issue where reordering stopped working after changing device orientation
🏄♂️ Improvements
- Updated not recommended
MediaQuerycalls:MediaQuery.of(context).size→MediaQuery.sizeOf(context)MediaQuery.of(context).orientation→MediaQuery.orientationOf(context)
- Thanks to
hajajmaorfor reporting this! (#163)
-
5.5.125 Aug 2025 -
5.5.019 Mar 2025Release notes
Open source →🏄♂️ Improvements
- default value of
automaticScrollExtentupdated to150.0(was previously80.0) - updated
READMEto clarify when to use aScrollController(see #152) - general code refactoring
- added new parameter
onReorderedPositions- similar to
onReorder, but allows you to handle reordering logic yourself - thanks to
FaFrefor the PR (#153)
- similar to
🐛 Bug Fixes
- fixed an issue in
Reorderable.builderwhen removing children- the error occurred because reordering finished with items outside the index
- fixed by adding a new parameter
itemCounttoReorderableBuilder.builder - this value ensures only rendered children are used for reordering
- thanks to
yoyoNTNUfor identifying the issue (#155)
- default value of
-
5.5.0-dev.114 Feb 2025 pre-releaseNothing published for this version
-
5.4.116 Jan 2025Release notes
Open source →🐛 Bug Fixes
- when dragging an item to a
DragTargetwidget, theonDragEndcallback was not being called, causing the reorder process to remain incomplete- fixed it by using the
onDragCompletedcallback ofDraggable - added a new example file:
drag_target_example.dart
- fixed it by using the
- when dragging an item to a
-
5.4.016 Nov 2024Release notes
Open source →🐛 Bug Fixes
- dragging is now restricted to a single contact at a time
- previously, initiating a drag with multiple contacts was possible, but only one contact would be dragged
- this issue has been resolved to prevent confusion
- special thanks to
wuhangandroidandGloomy699(#57)
- Fixed issue with
longPressDelayset toDuration.zeroorenableLongPressset tofalse(#141)- Previously, child widgets with an
onTapfunction wouldn't respond - This should now work correctly, but note that using a delay of less than 55ms may still cause the issue
- Previously, child widgets with an
⭐️ New Features
- added a generic type for
ReorderableBuilder- eliminates the need to cast
reorderListFunctioninonReorder - special thanks to
KevenMelo(#142)
- eliminates the need to cast
ℹ️ Information
- added a new example for
DefaultTabController- it was unclear how the
ReorderableBuilderworks withDefaultTabControllerandTabBarView - special thanks to
isenbjandemavgl(#78)
- it was unclear how the
- dragging is now restricted to a single contact at a time
-
5.3.210 Oct 2024Release notes
Open source →🐛 Bug Fixes
- fixed reordering issue:
- reordering didn't work correctly after adding a new item
- special thanks to
OICQ469(#135)
- fixed fade in
- the fade in didn't appear when a new child was added
- fixed reordering issue:
-
5.3.106 Oct 2024Release notes
Open source →🐛 Bug Fixes
-
fixed
PageView.builderissues: -
resolved reordering issue with scrolling:
- fixed a bug where scrolling to the top while dragging and then back to the bottom caused issues with reordering children
- thanks to
davidmartos96for identifying this issue (#127)
-
fixed drag and drop after resizing:
- addressed an issue where drag and drop would stop working correctly after resizing the grid
- acknowledgements to
khjde1207for the report (#91)
-
-
5.3.029 Sep 2024Release notes
Open source →⭐️ New Features
- added parameter
reverse- if your
GridViewuses the flagreverse, ensure to also use it forReorderableBuilder
- if your
- improved the scrolling behavior while dragging
- added parameter
-
5.2.021 Sep 2024Release notes
Open source →⭐️ New Features
- enhanced the visual appearance of the feedback widget when starting a drag
- improved behavior when
enableLongPressis set tofalse:- previously, the feedback widget only appeared after moving the dragged widget
- now, the feedback starts immediately when pressing the widget, as
LongPressDraggableis consistently used whetherenableLongPressistrueorfalse - this change also deprecates
enableLongPress, as it's no longer needed. To achieve the same effect asenableLongPress = false, simply setlongPressDelaytoDuration.zero
🐛 Bug Fixes
- Fixed an issue where dragging didn't work correctly with
CarouselSlider(thanks tocharmosz– Issue #118).- The solution ensures the scroll position of the
ScrollControlleris always used when it's added toReorderableBuilderand linked to a scrollable widget.
- The solution ensures the scroll position of the
-
5.1.008 Sep 2024Release notes
Open source →- there were performance issues (Issue #107)
- because
setStatewas called many times, it rerendered all children - I improved it by only rendering the updated children when they are built
- this version can be used to test it
- because
- there were performance issues (Issue #107)
-
5.1.0-dev.108 Sep 2024 pre-releaseNothing published for this version
-
5.0.109 Jul 2024Release notes
Open source →🐛 Bug fix
- Dragging not working in release mode on Android (thanks to
shubham-gupta-16- Issue #105)- changed behavior of
ListenertoHitTestBehavior.deferToChild
- changed behavior of
- Dragging not working in release mode on Android (thanks to
-
5.0.030 Jun 2024Release notes
Open source →This release introduces a complete overhaul of the package, delivering significant performance optimizations, bug fixes, and new features.
⭐️ New features
- Improved Reorderable.builder performance: Now only renders visible children, similar to GridView.builder, significantly enhancing performance
- Horizontal direction support (Issue #53):
GridViewnow supports both horizontal and vertical directions
- New
fadeInDurationparameter (Issue #68):- Default:
500ms - Controls the animation duration when a new child appears
- Default:
DraggableandLongPressDraggablenow supportdataattachment- New
onDraggedChildUpdatedcallback (thanks for the PR Bader-AI):- Called whenever a dragged child updates its position during dragging
- Avoid modifying children during this callback to prevent erratic behavior
- New
releasedChildDurationparameter:- Defines the duration for a child to settle into its new position after being released
- Default
150ms
- New
positionDurationparameter (thanks tonaderhezzy- Issue #94):- Adjusts the animation duration when a child's position changes (e.g., when adding/removing items)
- New
nonDraggableIndiciesparameter (thanks toBader-Alfor the PR #93):- Specifies indices of non-draggable items, though they remain movable while dragging other items
⚡️ Breaking Changes
onReorderfunction now includes a reorder callback that must be invoked within theonReorderhandler- This improves performance, especially when working with large lists
- Refer to the updated examples for guidance
onDragStartedandonDragEndcallbacks now include the index of the dragged child in their parameters
-
5.0.0-dev.1022 Sep 2023 pre-releaseRelease notes
Open source →🐛 Bug fix
- locked children were still draggable, now they are locked (thanks to
gmarizy- Issue #97)
- locked children were still draggable, now they are locked (thanks to
-
5.0.0-dev.917 Sep 2023 pre-releaseRelease notes
Open source →🐛 Bug fixes
- fixed issue when deleting the dragged child (thanks to
khjde1207- Issue #88)
⭐️ New features
- added parameter
positionDuration(thanks tonaderhezzy- Issue #94)- changes the animation duration when a child updates his position e.g. when adding or removing a child
- added parameter
nonDraggableIndicies(thanks toBader-Alfor the PR #93)- you can specify the indices of children that cannot be dragged but are still movable while dragging
- fixed issue when deleting the dragged child (thanks to
-
5.0.0-dev.821 Aug 2023 pre-releaseRelease notes
Open source →🐛 Bug fixes
- fixed animation when releasing a dragged item
- fixed item animations when adding or removing them
-
5.0.0-dev.704 Aug 2023 pre-releaseRelease notes
Open source →⭐️ New features
- you can add
datatoDraggableorLongPressDraggable- use the widget
CustomDraggablefor that - more info is added to the read me
- use the widget
- added new callback
onDraggedChildUpdated(thanks for the PR Bader-AI)- always called when the dragged child updated his position while dragging
- you should use this without changing the children, otherwise this could lead to weird behavior while using drag and drop
- added new parameter
releasedChildDuration- can be used to define the duration when a dragged child was released and is moving to his new position
- default value is 150ms
🐛 Bug fixes
- there were issues that required to add
initDelayto fix wrong behavior while drag and drop- this should be fixed by calculating the positions differently to before
- before the positions were calculated related to the global widget
- now the positions are only calculated to the local widget
- this fixes wrong calculated positions
- fixes issue of
naw2ndin Issue #83 when using a BottomModalSheet
- you can add
-
5.0.0-dev.624 May 2023 pre-releaseRelease notes
Open source →🐛 This release contains some bugfixes (optimization)
- while dragging there were issues when the user scrolled with another finger
- the dragged item was dropped if when it shouldn't
- while dragging there were issues when the user scrolled with another finger
-
5.0.0-dev.506 Apr 2023 pre-releaseRelease notes
Open source →🐛 This release contains some bugfixes
- fixed drag and drop after using functionality "scrolling while dragging" (thanks to tsquillario for pointing out that issue)
- fixed disappeared children after using functionality "scrolling while dragging"
-
5.0.0-dev.423 Mar 2023 pre-releaseRelease notes
Open source →⭐️ New features
- updated two functions
onDragStarted- added
indexto parameter indexis the index where the drag started
- added
onDragEnd- added
indexto parameter indexis the index where the drag ended
- added
🐛 This release contains some bugfixes
onDragStartedwasn't called and should work nowonDragEndwasn't called and should work now
- updated two functions
-
5.0.0-dev.313 Mar 2023 pre-releaseRelease notes
Open source →⭐️ New features
- added support for horizontal direction (Issue #53)
- with this, you can use your
GridViewin both directions - currently there might be still small bugs
- with this, you can use your
- added parameter
fadeInDuration(Issue #68)- default value is
const Duration(milliseconds: 500) - this parameter is responsible for the animation when a new child appears and describes the duration of the animation
- default value is
- parameter
initDelayis working again
- added support for horizontal direction (Issue #53)
-
5.0.0-dev.207 Feb 2023 pre-releaseRelease notes
Open source →- 🐛 This release contains some bugfixes
- drag and drop combined with
lockedIndicesandGridView.buildershould work now
- drag and drop combined with
- ⭐️ Optimized reordering items
- the callback
onReorderis offering a function as parameter after reordering items - the reason for that change is a performance issue, especially having big lists
- to ensure that everyone is using the same reordering process, I moved the logic to the package inside a function
- the callback
- 🧑💻
- refactored some code and added comments to some parts
- 🐛 This release contains some bugfixes
-
5.0.0-dev.102 Feb 2023 pre-releaseRelease notes
Open source →ℹ️ℹ️ℹ️ℹ️
- This is a prerelease and does not contain all functionalities that are tagged in GitHub for the release
- the functionalities will be implemented if possible
- This release contains
- completely redesigned logic for the animation and drag and drop
- smoother animation
- much better performance (
GridView.builderis now working as it should work, see more on the example inmain.dart)
- Still missing
- tests
- comments
- documentation
- some features from GitHub for this release
- there are still some bugs (I am pretty sure), so please try out this prerelease and post the issues on GitHub!
- known bugs:
- drag and drop in combination with
lockedIndicesandGridView.buildercan lead to wrong animations - Android: seems like it is possible that the drag and drop leads to wrong positioning of items when releasing the dragged item
GridView.builder: rotating the device leads to wrong behavior when using drag and drop
- drag and drop in combination with
- known bugs:
ℹ️ℹ️ℹ️ℹ️
- This is a prerelease and does not contain all functionalities that are tagged in GitHub for the release
-
4.0.002 Feb 2023Release notes
Open source →ℹ️ Information
This is not the new big release! This will come with version
5.0.0.- the reason is the flutter upgrade
3.7.0that was released a couple days ago - to ensure that people who are still using a lower flutter are not updating this package automatically, I had to make this update with
4.0.0 - so the big update will come with
5.0.0hopefully in one or two months - you could already test it as pre-release
🐛 Fixed error because of flutter upgrade
3.7.0- fixed an error that was thrown because of the flutter ugprade
3.7.0
- the reason is the flutter upgrade
-
4.0.0-dev.118 Jan 2023 pre-releaseNothing published for this version
-
3.1.330 Jul 2022Release notes
Open source →🐛 Fixed some bugs
- fixed two null check errors (Issue #41 and Issue #44)
- fixed animated behavior when using
GridView.builder(Issue #44)- before there was no animation when adding or removing an item, this should work now
- this should also fix the callback
onReorderwhere an index of an item is returned that should not exist
ℹ️ Information
- added Roadmap for release
5.0.0
-
3.1.219 Jul 2022Release notes
Open source →🐛 Fixed small bug
- Fixed exception
Null check operator used on a null value(Issue #41)
🧑💻Code Refactoring
- Updated
flutter_lintsto2.0.1
- Fixed exception
-
3.1.124 May 2022Release notes
Open source →🐛 Fixed Bugs
- There was a problem when having the scrollable widget outside the
ReorderableBuilder- The scrolling to top didn't work when it was scrolled to bottom
- also
automaticScrollExtentdidn't calculate the correct area when scrolling to top
- There was a problem when having the scrollable widget outside the
-
3.1.023 May 2022Release notes
Open source →🐛 Fixed Bugs
- Because of the update of flutter version
3.0.0, this package couldn't support earlier versions because of the last update- with this version, the package should also work for versions before
3.0.0
- with this version, the package should also work for versions before
- Because of the update of flutter version
-
3.0.114 May 2022 -
3.0.011 May 2022Release notes
Open source →⚠️️ Breaking Changes
- you have to add the
ScrollControllertoReorderableBuilderand yourGridViewto make sure that the drag and drop still works - an exception would be if your content is scrollable outside your
GridView
⭐️ New features
-
enableScrollingWhileDragging- IMPORTANT: You have to add a
GlobalKeyto yourGridViewbefore autoscroll can work - enables autoscrolling while dragging
- you can automatically scroll while dragging a child to the bottom or top of your
GridView
- IMPORTANT: You have to add a
-
automaticScrollExtent- define the height of the area before the autoscroll is starting when moving to top or bottom
-
for more information, check out the example
- you have to add the
-
2.1.021 Apr 2022Release notes
Open source →⭐️ New features
- added two new parameters for
ReorderableBuilder:onDragStarted: Called when user starts dragging a childonDragEnd: Called when user releases dragged child
🦙 Behavior changed
onReorderwon't be called anymore when the dragged child didn't change his original position
- added two new parameters for
-
2.0.315 Mar 2022Release notes
Open source →🐛 Fixed Bugs
- Wrong behavior after updating children (especially the key) and using drag and drop
- For every update of a child, a new listener was added
- this behavior is fixed
- now only one listener will be added
🦙 Behavior changed
- When using drag and drop to a locked child, no position will be changed
-
2.0.228 Feb 2022 -
2.0.2-dev.228 Feb 2022 pre-release -
2.0.2-dev.128 Feb 2022 pre-release -
2.0.128 Feb 2022 -
2.0.027 Feb 2022Release notes
Open source →- Official Release of 2.0.0
- There are breaking changes in this release:
- Currently I don't support the widget
Wrap - I removed all custom widgets for
GridView- instead you can use
ReorderableBuilderas a Wrapper for allGridViewof Flutter - See more on Getting Started or the example app
- instead you can use
- Currently I don't support the widget
-
2.0.0-dev.524 Feb 2022 pre-releaseRelease notes
Open source →- last release candidate! (if there aren't some critical bugs)
- this release includes a change for the function
onReorder- the function gives always a list of entities containing the old and new index for children
- this case had to be done to ensure correct animations when there are locked children (
lockedIndices) - see more on the example app in
main.dart
- multiple other bugs were solved when changing positions or adding/removing children
- added more commentaries to classes
- Before publishing the official
2.0.0, the following things will be done:- Unit and Widget tests
- some more refactoring, also in favor of making the testing easier
- Refactoring example app
- ReadMe gets a whole new update
-
2.0.0-dev.414 Feb 2022 pre-releaseRelease notes
Open source →- Removed
AnimatedGridViewBuilderandAnimatedReorderableBuilderbecause there were some problems splitting the logic for animation while dragging and adding/removing items ReorderableBuilderis making all the animation- to disable drag and drop, just make
enableDraggableto false
- to disable drag and drop, just make
- improved the performance
- Todo:
- Refactoring of code
- more testing
- Widget tests + Unit Tests (?)
- updating examples
- updating read me
- Removed
-
2.0.0-dev.306 Feb 2022 pre-releaseRelease notes
Open source →- Removed
ReorderableWrapandReorderableGridView - New widgets for more flexibility:
ReorderableBuilderfor Drag and Drop with allGridViewandWrapAnimatedGridViewBuilderfor animation when adding or removing children with all types ofGridViewAnimatedReorderableBuildercombinesReorderableBuilderandAnimatedGridViewBuilder
- See more examples with the new widgets in the example folder
- Removed
-
2.0.0-dev.201 Feb 2022 pre-releaseRelease notes
Open source →- Added animation when there are new children added or removed
- Working for all types of
GridView - Currently not supported for
ReorderableWrap
- Working for all types of
- Some bug fixes when adding/removing items
- Work in Progress:
- More Configurations
- Separated widget only for animation when removing/adding children
- Fixing flickering when adding children in GridView
- Still some bugs when reordering children
- Added animation when there are new children added or removed
-
2.0.0-dev.122 Jan 2022 pre-releaseRelease notes
Open source →- Complete rebuilt Reorderable GridViews and Wrap
- Supporting all types of
GridView - Better performance by displaying the original GridViews/Wrap
- More options to add to GridViews/Wrap
- Work in Progress:
- Animated children when removing/adding one or multiple children
- Tests still missing
- New docu
-
1.1.503 Jan 2022 -
1.1.403 Jan 2022 -
1.1.315 Nov 2021 -
1.1.215 Nov 2021 -
1.1.114 Nov 2021Release notes
Open source →- Some Readme changes
- fixed clipBehavior while scrolling (clipBehavior is now Clip.hardEdge)
-
1.1.013 Nov 2021Release notes
Open source →- Added animation for the following cases:
- Item was added to children
- Item was removed from children
- all children are animated when an item is added or removed
- From now, you have to add a unique key for every child in your list, see more on the example app
- Added animation for the following cases:
-
1.0.213 Nov 2021 -
1.0.122 Oct 2021 -
1.0.020 Oct 2021Release notes
Open source →- Old used
ReorderableGridViewnow calledReorderableWrap - New
ReorderableGridViewaddedReorderableGridViewReorderableGridView.countReorderableGridView.extent
- Old used
-
1.0.0-dev.420 Oct 2021 pre-release -
1.0.0-dev.319 Oct 2021 pre-release -
1.0.0-dev.219 Oct 2021 pre-release -
1.0.0-dev.118 Oct 2021 pre-releaseRelease notes
Open source →- Differentiate between Wrap and GridView
- ReorderableGridView renamed to ReorderableWrap
- ReorderableGridView created with different GridView Builds
- ReorderableGridView.count added
- ReorderableGridView.extent added
- Hint: Multiple Props still missing