🐛 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
🐛 Bug Fixes
-
fixed
PageView.builder
issues: -
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)
⭐️ New Features
- added parameter
reverse
- if your
GridView
uses the flagreverse
, ensure to also use it forReorderableBuilder
- if your
- improved the scrolling behavior while dragging
⭐️ New Features
- enhanced the visual appearance of the feedback widget when starting a drag
- improved behavior when
enableLongPress
is set tofalse
:- 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 whetherenableLongPress
istrue
orfalse
- this change also deprecates
enableLongPress
, as it's no longer needed. To achieve the same effect asenableLongPress = false
, simply setlongPressDelay
toDuration.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
ScrollController
is always used when it's added toReorderableBuilder
and linked to a scrollable widget.
- The solution ensures the scroll position of the
- 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
- because
🐛 Bug fix
- Dragging not working in release mode on Android (thanks to
shubham-gupta-16
- Issue #105)- changed behavior of
Listener
toHitTestBehavior.deferToChild
- changed behavior of
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
- Default:
Draggable
andLongPressDraggable
now supportdata
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 tonaderhezzy
- Issue #94):- Adjusts the animation duration when a child's position changes (e.g., when adding/removing items)
- New
nonDraggableIndicies
parameter (thanks toBader-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 theonReorder
handler- This improves performance, especially when working with large lists
- Refer to the updated examples for guidance
onDragStarted
andonDragEnd
callbacks now include the index of the dragged child in their parameters
🐛 Bug fix
- locked children were still draggable, now they are locked (thanks to
gmarizy
- Issue #97)
🐛 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-Al
for the PR #93)- you can specify the indices of children that cannot be dragged but are still movable while dragging
🐛 Bug fixes
- fixed animation when releasing a dragged item
- fixed item animations when adding or removing them
⭐️ New features
- you can add
data
toDraggable
orLongPressDraggable
- use the widget
CustomDraggable
for 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
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
🐛 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
🐛 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"
⭐️ New features
- updated two functions
onDragStarted
- added
index
to parameter index
is the index where the drag started
- added
onDragEnd
- added
index
to parameter index
is the index where the drag ended
- added
🐛 This release contains some bugfixes
onDragStarted
wasn't called and should work nowonDragEnd
wasn't called and should work now
⭐️ 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
- 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
initDelay
is working again
- 🐛 This release contains some bugfixes
- drag and drop combined with
lockedIndices
andGridView.builder
should work now
- drag and drop combined with
- ⭐️ 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
- the callback
- 🧑💻
- refactored some code and added comments to some parts
ℹ️ℹ️ℹ️ℹ️
- 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 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
lockedIndices
andGridView.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
- drag and drop in combination with
- known bugs:
ℹ️ℹ️ℹ️ℹ️
ℹ️ 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
🐛 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
🐛 Fixed small bug
- Fixed exception
Null check operator used on a null value
(Issue #41)
🧑💻Code Refactoring
- Updated
flutter_lints
to2.0.1
🐛 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
🐛 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
🐛 Fixed Bugs
- fixed warnings due to flutter update version
3.0.0
- you have to add the
ScrollController
toReorderableBuilder
and yourGridView
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 yourGridView
before 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
⭐️ New features
- added two new parameters for
ReorderableBuilder
:onDragStarted
: Called when user starts dragging a childonDragEnd
: Called when user releases dragged child
🦙 Behavior changed
onReorder
won't be called anymore when the dragged child didn't change his original position
🐛 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
- Downgraded Dart-version from
2.16.1
to2.16.0
- second try to solve dependency issue
- trying to solve dependency problem
- updated pubspec
- 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 allGridView
of Flutter - See more on Getting Started or the example app
- instead you can use
- Currently I don't support the widget
- 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
- Removed
AnimatedGridViewBuilder
andAnimatedReorderableBuilder
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
- 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
ReorderableWrap
andReorderableGridView
- New widgets for more flexibility:
ReorderableBuilder
for Drag and Drop with allGridView
andWrap
AnimatedGridViewBuilder
for animation when adding or removing children with all types ofGridView
AnimatedReorderableBuilder
combinesReorderableBuilder
andAnimatedGridViewBuilder
- See more examples with the new widgets in the example folder
- 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
- 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
- Fixed a bug when changing from
enableReorder
false
totrue
- Added parameter
enableReorder
with default valuetrue
- BoxDecoration added for dragged child
- AnimationController disposing
- Some Readme changes
- fixed clipBehavior while scrolling (clipBehavior is now Clip.hardEdge)
- 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
- fixed scrolling e. g. for
RefreshIndicator
- fixed ClipBehavior
- Old used
ReorderableGridView
now calledReorderableWrap
- New
ReorderableGridView
addedReorderableGridView
ReorderableGridView.count
ReorderableGridView.extent
- Drag Update Position fixed with PostFrameCallback
- All tests now passes
- Fixed Scrolling Bugs in and outside widget
- Fixed ReorderableGridView.extent
- 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
- Fixed some critical bugs
- When children are updated (e. g. a new one is added or removed) then the gridview updates normally
- When changing screen orientation, then the GridView repositions all children
- all bugs are covered with new tests
- Updated ReadMe
- lockedChildren added to specify items that should not change their positions
- optimized performance
- onUpdate added to notifiy the user that there was an update while moving items
- LongPressDelay added
- ReadMe Prettier
- ReadMe Prettier
- ReadMe Fix
- ReadMe Fix
- ReadMe update with badges
- Build Number
- Code Coverage
- Build Passing
- Updated ReadMe
- Added example
- Renamed
FlutterReorderableGridView
toReorderableGridView
- Enables to reorder widgets inside a Wrap
- Animated Reordering