navigator_resizable
A thin wrapper around Navigator that *visually* resizes the child navigator to match the size of the content displayed in the current route.
3.0.3
98K downloads/mo
#1146 most downloaded on pub.dev
fujidaiti/navigator_resizable
What this package is like to depend on
Last release 2 months ago
22 Jun 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 8 of 8 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
8 releases · first in 2025
4 releases in the last 12 months
see the full history below
Release timeline
8 releases · Jan 2025 to Jun 2026Releases
latest 8-
3.0.322 Jun 2026Release notes
Open source →What's Changed
- Add missing
@mustCallSupers ObservableRouteMixin by @fujidaiti in #41
Full Changelog: v3.0.2...v3.0.3
- Add missing
-
3.0.205 Apr 2026Release notes
Open source →What's Changed
- chore(env): Update Flutter SDK from 3.41.2 to 3.41.4 [bot] by @norelease-bot[bot] in #26
- chore(env): Update Flutter SDK from 3.41.4 to 3.41.5 [bot] by @norelease-bot[bot] in #28
- chore(env): Update Flutter SDK from 3.41.5 to 3.41.6 [bot] by @norelease-bot[bot] in #29
- Run code quality checks against only the latest supported SDK in CI by @fujidaiti in #31
- Fix assertion error after performing predictive back gesture on Android by @fujidaiti in #30
- Fix jaggy route pop animation with predictive back gesture on Android by @fujidaiti in #32
- Migrate platform code of example app to latest Flutter SDK by @fujidaiti in #33
- Bump to v3.0.2 by @fujidaiti in #34
New Contributors
- @norelease-bot[bot] made their first contribution in #26
Full Changelog: v3.0.1...v3.0.2
Release notes
Open source →- Fix jaggy route pop animation with predictive back gesture on Android
- Fix assertion error after performing predictive back gesture on Android
-
3.0.128 Feb 2026Release notes
Open source →What's Changed
- Add missing parameters to ResizablePageRoutePageBuilder by @fujidaiti in #21
- Bump minimum Flutter SDK version to 3.35.1 by @fujidaiti in #22
- Fix: NavigatorResizable size doesn't update when the current route is changed via Navigator.replace by @fujidaiti in #19
Full Changelog: v3.0.0...v3.0.1
Release notes
Open source →- Add
key,name,arguments, andrestorationIdparameters toResizablePageRoutePageBuilder - Fix:
NavigatorResizablesize doesn't update when the current route is changed viaNavigator.replace - Bump minimum Flutter SDK version to 3.35.1
-
3.0.001 Sep 2025Release notes
Open source →What's Changed
- Bump development Flutter SDK version to 3.35.1 by @fujidaiti in #10
- Add minimal declarative example by @fujidaiti in #13
- Add constraint assertion to prevent unbounded dimensions in NavigatorResizable by @fujidaiti in #15
- Fix: assertion error when popping route in the middle of transition animation by @fujidaiti in #16
Full Changelog: v2.0.0...v3.0.0
Release notes
Open source →- Fix: assertion error when popping route in the middle of transition animation (#16)
NavigatorResizablenow asserts when provided with unbounded width or height constraints(#12).
Breaking change in
NavigatorResizableNavigatorResizablenow requires bounded constraints on both axes. If its parent passes unbounded constraints (e.g., fromColumnorRow), an assertion will be thrown in debug mode. This helps catch cases where routes inside the underlyingNavigatormight otherwise receive infinite dimensions, which often surface when route content usesdouble.infinityfor width/height to expand and fill the available space.Breaking change in
NavigatorEventListenerThe signature of
NavigatorEventListener.didStartTransitionhas been changed to handle edge cases where a transition is started in the middle of another transition, for example, when a route is pushed and immediately popped.BEFORE
Previously, the route that is placed on top of the navigation stack before the transition starts is passed as the first argument of
didStartTransition.void didStartTransition( Route<dynamic> currentRoute, Route<dynamic> nextRoute, Animation<double> animation, { bool isUserGestureInProgress = false, });AFTER
In the new signature, the first argument
currentRoutewas removed, and the second argument was renamed totargetRoute. You can still keep track of the top-most route by capturing therouteobject reported by theNavigatorEventObserver.didEndTransitioncallback.void didStartTransition( Route<dynamic> targetRoute, Animation<double> animation, { bool isUserGestureInProgress = false, }); -
2.0.001 Jun 2025Release notes
Open source →What's Changed
- Refine doc comments by @fujidaiti in #6
- Migrate to Flutter 2.29 by @fujidaiti in #9
Full Changelog: v1.0.2...v2.0.0
Release notes
Open source →- Updated minimum supported Flutter SDK to
3.29.0. - The invocation order of
NavigatorEventListenercallbacks has been changed to align with the behavior of the latest Flutter SDK.
Background
Flutter
3.29.0introduced changes to the sequence of underlying navigator events, which may affect the invocation order ofNavigatorEventListenercallbacks.Breaking changes in
NavigatorEventObserverThe sequence in which
NavigatorEventObserverinvokes itsNavigatorEventListenercallback methods has been adjusted to align with the updated Flutter SDK. These changes do not affect the behavior of theNavigatorResizablewidget itself.Zero-Duration Pop Transitions
Zero-duration pop transitions occur when a route is popped with no animation duration (i.e.,
transitionDuration: Duration.zero), causing the transition to complete instantly without any visual animation. Previously, thedidEndTransition(routeBelow)callback was invoked immediately after thedidPopNext(routeBelow, poppedRoute)callback. Now, thedidStartTransition(poppedRoute, routeBelow, ...)callback is invoked afterdidPopNext(...), and thedidEndTransition(routeBelow)callback is invoked later after the transition has settled.Declarative Multi-Route Pushes
Previously, when pushing multiple routes via a single state change (e.g., navigating from
/Ato/A/B/C), thedidInstall(B)callback for intermediate routes was invoked early in the sequence alongside the primary transition events for routeC. Now, thedidInstall(B)callback for intermediate routes is invoked later in the sequence, after the primary transition has completed (i.e., afterdidEndTransition(C)). -
1.0.211 Jan 2025Release notes
Open source →Release notes
Open source →- Rename the
ResizablePageBuildertoResizablePageRoutePageBuilder, and theResizablePageRoutePageBuildertoResizablePageRouteBuilder.
- Rename the
-
1.0.111 Jan 2025Release notes
Open source →What's Changed
- Initial version by @fujidaiti in #3
- Fix broken links in the readme by @fujidaiti in #4
Full Changelog: https://github.com/fujidaiti/navigator_resizable/commits/v1.0.1
-
1.0.011 Jan 2025