PackageTrack
Sign in Get early access

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 2026
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 60 of 72
  1. 5.7.0 31 May 2026
    Release notes

    ⭐️ New Features

    • added animation curve support to ReorderableAnimationConfig (thanks for the request to WD-J, see #171)
    • added new curve parameters:
      • positionChangeCurve
      • draggingPositionChangeCurve
      • releasedItemCurve
      • fadeInCurve
      • dragFeedbackCurve
      • defaultAnimationCurve
    • all animations now support curve fallback behavior:
      • use specific curve if set
      • otherwise use defaultAnimationCurve

    ⚡️ Breaking Changes

    • removed direct duration parameters from ReorderableBuilder and ReorderableBuilder.builder
    • use animationConfig instead:
      • positionDuration -> animationConfig.positionChangeDuration
      • releasedChildDuration -> animationConfig.releasedItemDuration
      • fadeInDuration -> animationConfig.fadeInDuration
    Open source →
  2. 5.6.0 15 Mar 2026
    Release notes

    ⭐️ New Features

    • added new animationConfig parameter to ReorderableBuilder and ReorderableBuilder.builder
    • added ReorderableAnimationConfig to centralize animation-related configuration
    • ReorderableAnimationConfig now contains the animation durations:
      • positionChangeDuration
      • draggingPositionChangeDuration
      • releasedItemDuration
      • fadeInDuration
      • dragFeedbackDuration

    ⚠️ Deprecations

    • deprecated direct animation duration parameters in ReorderableBuilder in favor of animationConfig:
      • positionDuration -> animationConfig.positionChangeDuration
      • releasedChildDuration -> animationConfig.releasedItemDuration
      • fadeInDuration -> animationConfig.fadeInDuration
    • deprecated enableLongPress
      • to start dragging immediately, set longPressDelay to Duration.zero
    Open source →
  3. 5.5.3 16 Feb 2026
    Release notes

    🐛 Bug Fixes

    • performance issue fixed while scrolling (thanks to stanbav for the PR, see #166)

    🏄‍♂️ Improvements

    • updated android folder in example project to the flutter version 3.38.9
    Open source →
  4. 5.5.2 03 Nov 2025
    Release notes

    Merge pull request #164 from karvulf/163-update-usage-of-mediaquery-w…

    Open source →
    Release notes

    🐛 Bug Fixes

    • fixed an issue where reordering stopped working after changing device orientation

    🏄‍♂️ Improvements

    • Updated not recommended MediaQuery calls:
      • MediaQuery.of(context).sizeMediaQuery.sizeOf(context)
      • MediaQuery.of(context).orientationMediaQuery.orientationOf(context)
    • Thanks to hajajmaor for reporting this! (#163)
    Open source →
  5. 5.5.1 25 Aug 2025
    Release notes

    🐛 Bug Fixes

    • forgotten assert in the builder constructor was added (thanks to FaFre, see #159)
    • added mounted check before calling .forward() to prevent AssertionError (thanks hajajmaor, see #158)
    Open source →
  6. 5.5.0 19 Mar 2025
    Release notes

    🏄‍♂️ Improvements

    • default value of automaticScrollExtent updated to 150.0 (was previously 80.0)
    • updated README to clarify when to use a ScrollController (see #152)
    • general code refactoring
    • added new parameter onReorderedPositions
      • similar to onReorder, but allows you to handle reordering logic yourself
      • thanks to FaFre for the PR (#153)

    🐛 Bug Fixes

    • fixed an issue in Reorderable.builder when removing children
      • the error occurred because reordering finished with items outside the index
      • fixed by adding a new parameter itemCount to ReorderableBuilder.builder
      • this value ensures only rendered children are used for reordering
      • thanks to yoyoNTNU for identifying the issue (#155)
    Open source →
  7. 5.5.0-dev.1 14 Feb 2025 pre-release

    Nothing published for this version

  8. 5.4.1 16 Jan 2025
    Release notes

    🐛 Bug Fixes

    • when dragging an item to a DragTarget widget, the onDragEnd callback was not being called, causing the reorder process to remain incomplete
      • fixed it by using the onDragCompleted callback of Draggable
      • added a new example file: drag_target_example.dart
    Open source →
  9. 5.4.0 16 Nov 2024
    Release notes

    Merge pull request #148 from karvulf/141-bug-longpressdelay-to-durati…

    Open source →
    Release notes

    🐛 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 wuhangandroid and Gloomy699 (#57)
    • Fixed issue with longPressDelay set to Duration.zero or enableLongPress set to false (#141)
      • Previously, child widgets with an onTap function wouldn't respond
      • This should now work correctly, but note that using a delay of less than 55ms may still cause the issue

    ⭐️ New Features

    • added a generic type for ReorderableBuilder
      • eliminates the need to cast reorderListFunction in onReorder
      • special thanks to KevenMelo (#142)

    ℹ️ Information

    • added a new example for DefaultTabController
      • it was unclear how the ReorderableBuilder works with DefaultTabController and TabBarView
      • special thanks to isenbj and emavgl (#78)
    Open source →
  10. 5.3.2 10 Oct 2024
    Release notes

    🐛 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
    Open source →
  11. 5.3.1 06 Oct 2024
    Release notes

    🐛 Bug Fixes

    • fixed PageView.builder issues:

      • resolved problems when using PageView.builder, improving stability during reordering
      • special thanks to FanYuanBo888 (#121) and billizzard2 (#113) for reporting and contributing
    • 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 davidmartos96 for 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 khjde1207 for the report (#91)
    Open source →
  12. 5.3.0 29 Sep 2024
    Release notes

    ⭐️ New Features

    • added parameter reverse
      • if your GridView uses the flag reverse, ensure to also use it for ReorderableBuilder
    • improved the scrolling behavior while dragging
    Open source →
  13. 5.2.0 21 Sep 2024
    Release notes

    ⭐️ New Features

    • enhanced the visual appearance of the feedback widget when starting a drag
    • improved behavior when enableLongPress is set to false:
      • previously, the feedback widget only appeared after moving the dragged widget
      • now, the feedback starts immediately when pressing the widget, as LongPressDraggable is consistently used whether enableLongPress is true or false
      • this change also deprecates enableLongPress, as it's no longer needed. To achieve the same effect as enableLongPress = false, simply set longPressDelay to Duration.zero

    🐛 Bug Fixes

    • Fixed an issue where dragging didn't work correctly with CarouselSlider (thanks to charmosz – Issue #118).
      • The solution ensures the scroll position of the ScrollController is always used when it's added to ReorderableBuilder and linked to a scrollable widget.
    Open source →
  14. 5.1.0 08 Sep 2024
    Release notes
    • there were performance issues (Issue #107)
      • because setState was 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
    Open source →
  15. 5.1.0-dev.1 08 Sep 2024 pre-release

    Nothing published for this version

  16. 5.0.1 09 Jul 2024
    Release notes

    🐛 Bug fix

    • Dragging not working in release mode on Android (thanks to shubham-gupta-16 - Issue #105)
      • changed behavior of Listener to HitTestBehavior.deferToChild
    Open source →
  17. 5.0.0 30 Jun 2024
    Release notes

    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):
      • GridView now supports both horizontal and vertical directions
    • New fadeInDuration parameter (Issue #68):
      • Default: 500ms
      • Controls the animation duration when a new child appears
    • Draggable and LongPressDraggable now support data attachment
    • New onDraggedChildUpdated callback (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 releasedChildDuration parameter:
      • Defines the duration for a child to settle into its new position after being released
      • Default 150ms
    • New positionDuration parameter (thanks to naderhezzy - Issue #94):
      • Adjusts the animation duration when a child's position changes (e.g., when adding/removing items)
    • New nonDraggableIndicies parameter (thanks to Bader-Al for the PR #93):
      • Specifies indices of non-draggable items, though they remain movable while dragging other items

    ⚡️ Breaking Changes

    • onReorder function now includes a reorder callback that must be invoked within the onReorder handler
      • This improves performance, especially when working with large lists
      • Refer to the updated examples for guidance
    • onDragStarted and onDragEnd callbacks now include the index of the dragged child in their parameters
    Open source →
  18. 5.0.0-dev.10 22 Sep 2023 pre-release
    Release notes

    🐛 Bug fix

    • locked children were still draggable, now they are locked (thanks to gmarizy - Issue #97)
    Open source →
  19. 5.0.0-dev.9 17 Sep 2023 pre-release
    Release notes

    🐛 Bug fixes

    • fixed issue when deleting the dragged child (thanks to khjde1207 - Issue #88)

    ⭐️ New features

    • added parameter positionDuration (thanks to naderhezzy - Issue #94)
      • changes the animation duration when a child updates his position e.g. when adding or removing a child
    • added parameter nonDraggableIndicies (thanks to Bader-Al for the PR #93)
      • you can specify the indices of children that cannot be dragged but are still movable while dragging
    Open source →
  20. 5.0.0-dev.8 21 Aug 2023 pre-release
    Release notes

    🐛 Bug fixes

    • fixed animation when releasing a dragged item
    • fixed item animations when adding or removing them
    Open source →
  21. 5.0.0-dev.7 04 Aug 2023 pre-release
    Release notes

    ⭐️ New features

    • you can add data to Draggable or LongPressDraggable
      • use the widget CustomDraggable for that
      • more info is added to the read me
    • 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 initDelay to 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 naw2nd in Issue #83 when using a BottomModalSheet
    Open source →
  22. 5.0.0-dev.6 24 May 2023 pre-release
    Release notes

    🐛 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
    Open source →
  23. 5.0.0-dev.5 06 Apr 2023 pre-release
    Release notes

    🐛 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"
    Open source →
  24. 5.0.0-dev.4 23 Mar 2023 pre-release
    Release notes

    ⭐️ New features

    • updated two functions
      • onDragStarted
        • added index to parameter
        • index is the index where the drag started
      • onDragEnd
        • added index to parameter
        • index is the index where the drag ended

    🐛 This release contains some bugfixes

    • onDragStarted wasn't called and should work now
    • onDragEnd wasn't called and should work now
    Open source →
  25. 5.0.0-dev.3 13 Mar 2023 pre-release
    Release notes

    ⭐️ New features

    • added support for horizontal direction (Issue #53)
      • with this, you can use your GridView in both directions
      • currently there might be still small bugs
    • 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
    • parameter initDelay is working again
    Open source →
  26. 5.0.0-dev.2 07 Feb 2023 pre-release
    Release notes
    • 🐛 This release contains some bugfixes
      • drag and drop combined with lockedIndices and GridView.builder should work now
    • ⭐️ Optimized reordering items
      • the callback onReorder is 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
    • 🧑‍💻
      • refactored some code and added comments to some parts
    Open source →
  27. 5.0.0-dev.1 02 Feb 2023 pre-release
    Release notes

    ℹ️ℹ️ℹ️ℹ️

    • 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.builder is now working as it should work, see more on the example in main.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 lockedIndices and GridView.builder can 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

    ℹ️ℹ️ℹ️ℹ️

    Open source →
  28. 4.0.0 02 Feb 2023
    Release notes

    ℹ️ Information

    This is not the new big release! This will come with version 5.0.0.

    • the reason is the flutter upgrade 3.7.0 that 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.0 hopefully 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
    Open source →
  29. 4.0.0-dev.1 18 Jan 2023 pre-release

    Nothing published for this version

  30. 3.1.3 30 Jul 2022
    Release notes

    🐛 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 onReorder where an index of an item is returned that should not exist

    ℹ️ Information

    • added Roadmap for release 5.0.0
    Open source →
  31. 3.1.2 19 Jul 2022
    Release notes

    🐛 Fixed small bug

    • Fixed exception Null check operator used on a null value (Issue #41)

    🧑‍💻Code Refactoring

    • Updated flutter_lints to 2.0.1
    Open source →
  32. 3.1.1 24 May 2022
    Release notes

    🐛 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 automaticScrollExtent didn't calculate the correct area when scrolling to top
    Open source →
  33. 3.1.0 23 May 2022
    Release notes

    🐛 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
    Open source →
  34. 3.0.1 14 May 2022
    Release notes

    🐛 Fixed Bugs

    • fixed warnings due to flutter update version 3.0.0
    Open source →
  35. 3.0.0 11 May 2022
    Release notes

    ⚠️️ Breaking Changes

    • you have to add the ScrollController to ReorderableBuilder and your GridView to 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 GlobalKey to your GridView before autoscroll can work
      • enables autoscrolling while dragging
      • you can automatically scroll while dragging a child to the bottom or top of your GridView
    • 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

    Open source →
  36. 2.1.0 21 Apr 2022
    Release notes

    ⭐️ New features

    • added two new parameters for ReorderableBuilder:
      • onDragStarted: Called when user starts dragging a child
      • onDragEnd: Called when user releases dragged child

    🦙 Behavior changed

    • onReorder won't be called anymore when the dragged child didn't change his original position
    Open source →
  37. 2.0.3 15 Mar 2022
    Release notes

    🐛 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
    Open source →
  38. 2.0.2 28 Feb 2022
    Release notes
    • Downgraded Dart-version from 2.16.1 to 2.16.0
    Open source →
  39. 2.0.2-dev.2 28 Feb 2022 pre-release
    Release notes
    • second try to solve dependency issue
    Open source →
  40. 2.0.2-dev.1 28 Feb 2022 pre-release
    Release notes
    • trying to solve dependency problem
    Open source →
  41. 2.0.1 28 Feb 2022
    Release notes
    • updated pubspec
    Open source →
  42. 2.0.0 27 Feb 2022
    Release notes
    • 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 ReorderableBuilder as a Wrapper for all GridView of Flutter
        • See more on Getting Started or the example app
    Open source →
  43. 2.0.0-dev.5 24 Feb 2022 pre-release
    Release notes
    • 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
    Open source →
  44. 2.0.0-dev.4 14 Feb 2022 pre-release
    Release notes
    • Removed AnimatedGridViewBuilder and AnimatedReorderableBuilder because there were some problems splitting the logic for animation while dragging and adding/removing items
    • ReorderableBuilder is making all the animation
      • to disable drag and drop, just make enableDraggable to false
    • improved the performance
    • Todo:
      • Refactoring of code
      • more testing
      • Widget tests + Unit Tests (?)
      • updating examples
      • updating read me
    Open source →
  45. 2.0.0-dev.3 06 Feb 2022 pre-release
    Release notes
    • Removed ReorderableWrap and ReorderableGridView
    • New widgets for more flexibility:
      • ReorderableBuilder for Drag and Drop with all GridView and Wrap
      • AnimatedGridViewBuilder for animation when adding or removing children with all types of GridView
      • AnimatedReorderableBuilder combines ReorderableBuilder and AnimatedGridViewBuilder
    • See more examples with the new widgets in the example folder
    Open source →
  46. 2.0.0-dev.2 01 Feb 2022 pre-release
    Release notes
    • Added animation when there are new children added or removed
      • Working for all types of GridView
      • Currently not supported for ReorderableWrap
    • 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
    Open source →
  47. 2.0.0-dev.1 22 Jan 2022 pre-release
    Release notes
    • 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
    Open source →
  48. 1.1.5 03 Jan 2022
    Release notes
    • Fixed a bug when changing from enableReorder false to true
    Open source →
  49. 1.1.4 03 Jan 2022
    Release notes
    • Added parameter enableReorder with default value true
    Open source →
  50. 1.1.3 15 Nov 2021
    Release notes
    • BoxDecoration added for dragged child
    Open source →
  51. 1.1.2 15 Nov 2021
    Release notes
    • AnimationController disposing
    Open source →
  52. 1.1.1 14 Nov 2021
    Release notes
    • Some Readme changes
    • fixed clipBehavior while scrolling (clipBehavior is now Clip.hardEdge)
    Open source →
  53. 1.1.0 13 Nov 2021
    Release notes
    • 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
    Open source →
  54. 1.0.2 13 Nov 2021
    Release notes
    • fixed scrolling e. g. for RefreshIndicator
    Open source →
  55. 1.0.1 22 Oct 2021
    Release notes
    • fixed ClipBehavior
    Open source →
  56. 1.0.0 20 Oct 2021
    Release notes
    • Old used ReorderableGridView now called ReorderableWrap
    • New ReorderableGridView added
      • ReorderableGridView
      • ReorderableGridView.count
      • ReorderableGridView.extent
    Open source →
  57. 1.0.0-dev.4 20 Oct 2021 pre-release
    Release notes
    • Drag Update Position fixed with PostFrameCallback
    • All tests now passes
    Open source →
  58. 1.0.0-dev.3 19 Oct 2021 pre-release
    Release notes
    • Fixed Scrolling Bugs in and outside widget
    Open source →
  59. 1.0.0-dev.2 19 Oct 2021 pre-release
    Release notes
    • Fixed ReorderableGridView.extent
    Open source →
  60. 1.0.0-dev.1 18 Oct 2021 pre-release
    Release notes
    • 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
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive