flutter_resizable_container
Add nestable, resizable containers to your Flutter app with ease.
4.2.0
6.1K downloads/mo
#3582 most downloaded on pub.dev
andyhorn/flutter_resizable_container
What this package is like to depend on
Last release 1 years ago
10 May 2025
Ships unpredictably
gaps range from 2 weeks to 13 months
Nearly every release is documented
notes for 24 of 24 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
32 releases · first in 2023
0 releases in the last 12 months
see the full history below
Release timeline
32 releases · Jan 2023 to May 2025Releases
latest 32-
4.2.010 May 2025Release notes
Open source →- Added
cascadeNegativeDeltaflag to cascade changes through children that have reached their lower bound. - Added
onDragStartandonDragEndcallbacks to theResizableDivider. - Added a
keyparameter to theResizableChildto pass to the child Widget's wrapper. - Bump FVM Flutter and dependency versions.
- Added
-
4.1.011 Apr 2025Release notes
Open source →- Improved change detection in the container to enable more accurate rebuilds when children change.
-
4.0.126 Feb 2025Release notes
Open source →- Fixed a bug causing a custom divider with interactions to break resizing.
-
4.0.025 Dec 2024 -
4.0.0-beta.425 Dec 2024 pre-releaseRelease notes
Open source →- Account for expand sizes with min/max bounds
- Prevent the controller from notifying its listeners during layout/init
- Make
ResizableSizesubclasses' constructor's private - Improve doc comments
-
4.0.0-beta.321 Dec 2024 pre-releaseRelease notes
Open source →- Move the min/max bounds out of the
ResizableChildand into theResizableSize - Remove the
dividerproperty of theResizableContainerand add it into theResizableChild - Add a
cursorproperty to theResizableDividerto display a customMouseCursorwhen hovering over the divider
- Move the min/max bounds out of the
-
4.0.0-beta.219 Dec 2024 pre-releaseRelease notes
Open source →- Add a
ResizableLayoutwidget that uses a customRenderObjectto handle the initial layout and the layout after any properties on theResizableContainerare updated.
- Add a
-
4.0.0-beta.130 Nov 2024 pre-releaseRelease notes
Open source →- Rewrite the Controller/Container logic to allow Flutter to handle the initial layout of all widgets, updating the rendered sizes in the controller after the first frame. This shouldn't have any major impact to the API, but it does introduce the use of Timers, which could affect tests.
- Rename
ResizableController.sizestoResizableController.pixelsto more clearly indicate its value. - Store, expose, and utilize the current list of
ResizableSizevalues in the controller. This enables the values to be used even after manually updating them.
-
3.0.419 Dec 2024 -
3.0.330 Nov 2024Release notes
Open source →- Reinstate the removed
ResizableControllerManager#setChildrenmethod. This method was removed because the method it targets on the controller was made public. However, the package version was incorrectly bumped since this could be a breaking change. This patch reinstates the method, fixing the breaking change, but adds a deprecation warning in favor of the public controller method.
- Reinstate the removed
-
3.0.229 Nov 2024Release notes
Open source →- Make the "setChildren" method of the ResizableContainer public to address a limitation that was causing the "children length equals sizes length" assertions to fail (#61).
-
3.0.129 Nov 2024Release notes
Open source →- Fix a bug causing negative values in a BoxConstraint, which was throwing an AssertionError (#60).
-
3.0.012 Sep 2024Release notes
Open source →After much feedback, I revised the
ResizableContainerDividerto be even more customizable. The changes include:- Replace the
size,indent, andendIndentproperties with alengthproperty, of typeResizableSize, to control how long the dividing line is - Add
crossAxisAlignmentandmainAxisAlignmentproperties to control where the line sits in its available space (if the line does not take up its full length and/or has padding, see below). - Add a
paddingproperty to add empty space along the main axis - the divider sits within, or alongside, this empty space
- Replace the
-
2.0.024 May 2024 -
2.0.0+beta.110 May 2024 withdrawnNothing published for this version
-
2.0.0-beta.323 May 2024 pre-releaseRelease notes
Open source →- Add a
ResizableSize.expandconstructor that takes aflexinteger (defaults to 1) - Remove the optionality of the
sizeparameter inResizableChildand use a defaultResizableSize.expand()value - Adjust the controller to disallow
nullvalues forResizableSizearguments - Adjust the controller to prioritize modifying
ResizableSize.expandchildren when scaling the window (up or down) over thepixelandratiochildren, unless noexpandchildren are set
- Add a
-
2.0.0-beta.221 May 2024 pre-releaseRelease notes
Open source →- Added a new
ResizableSizeclass that defines a "size" in pixels or as a ratio - Changed the
startingRatioin theResizableChildtostartingSizethat takes an optionalResizableSize- This change allows the starting size of a child to be defined as an absolute value (in logical pixels) or as a ratio of the available space
- If there is a mixture of pixels and ratio sizes, the pixel sizes will be given priority and then the ratio sizes will be given the remaining available space
- Added a
setSizesmethod to theResizableControllerthat takes a list of optionalResizableSizes. These sizes will be applied to the current children following the same rules as noted above - Removed the
ratiossetter in favor of the newsetSizesmethod - Made the controller an optional param in the
ResizableContainerctor
- Added a new
-
2.0.0-beta.110 May 2024 pre-releaseRelease notes
Open source →- Renamed
ResizableChildDatatoResizableChild - Added an
expandflag to theResizableChildctor- If there is a
startingRatioset and this flag istrue, the child will automatically expand to fill any remaining available space. If this flag isfalse, the child will only expand to meet itsstartingRatioconstraint - If the
startingRatioisnull, the child will automatically expand to fill any remaining available space, regardless of whether or not this flag is set
- If there is a
- Move the list of
ResizableChildobjects out of theResizableControllerand back into theResizableContaineras thechildrenparameter- This allows the list of children to be modified on-the-fly without recreating a
ResizableController
- This allows the list of children to be modified on-the-fly without recreating a
- Renamed
-
1.0.009 May 2024Release notes
Open source →First stable version!
- Encapsulation of divider configuration in a new
ResizableDividerclass- Divider
thicknessandsizeproperties, mirroring the Flutter Divider'sthicknessandwidthproperties, have been added onHoverEnterandonHoverExitcallbacks allow you to react to the user's interactions with the divider
- Divider
- All size tracking and calculations have been moved out of the
ResizableContainerwidget and into theResizableController- This fixed several bugs and improves performance by converting the
ResizableContainerto aStatelessWidget(from stateful)
- This fixed several bugs and improves performance by converting the
ResizableContainernow requires aList<Widget>as itschildrenproperty, as theList<ResizableChildData>have been moved into theResizableController- Added and improved tests
- Added a GH workflow to deploy the example app to GH Pages
- Encapsulation of divider configuration in a new
-
0.4.205 May 2024Release notes
Open source →- Fixes an issue with the
didUpdateWidgetlifecycle hook causing errors to be thrown during hot-reloads
- Fixes an issue with the
-
0.4.122 Feb 2024Release notes
Open source →- Add tests for
ResizableController - Add tests for
ResizableContainer - Add GitHub Actions workflow
- Add tests for
-
0.4.021 Feb 2024Release notes
Open source →- Add
ResizableControllerto allow programmatic control of resizable children - Fix a bug causing adjacent containers to grow in size when the target container reaches is minimum size
- Add
-
0.3.007 Feb 2024 -
0.2.102 Feb 2024 -
0.2.002 Feb 2024 -
0.1.221 Jan 2023 -
0.1.121 Jan 2023 -
0.1.020 Jan 2023Release notes
Open source →- Rework dividers to lie in-line with child widgets, taking up space along the primary axis, instead of being placed in a stack and positioned according to the child sizes
- Add a custom divider who's width is known and can be controlled to ease calculating the available space for child widgets
- Remove the optionality of the divider - this widget is now required to be visible, as hiding it would disable the resize functionality
-
0.0.419 Jan 2023Release notes
Open source →- Add optional divider line
- Fix a bug allowing child sizes to grow beyond available space
- Improve example with switchable direction and toggle-able divider
-
0.0.318 Jan 2023Release notes
Open source →- Add example to README
- Add example project
- Fix a bug allowing negative child sizes
-
0.0.218 Jan 2023 -
0.0.118 Jan 2023Release notes
Open source →Initial Release
- Container resizes and enforces child size constraints (if present)
- Resize cursor responds to user clicks and drags on web