Releases: AndroidPoet/back_stack
Releases · AndroidPoet/back_stack
Release list
0.6.1
A correctness pass over the async-gating, deep-link, and page-memo edges. Still zero dependencies.
AsyncRedirect.invalidate()now cancels in-flight checks. A check already awaiting (auth/session lookup) could complete and apply a decision made from the very stateinvalidate()declared stale. Each check is now pinned to a cache generation; one that resolves after aninvalidate()is dropped (not cached, not applied) and any held navigation released, so the next navigation re-checks against fresh state.- A deep-link source that errors no longer surfaces as an unhandled async error. Errors from
initialLink/linkStreamthemselves are now caught and dropped — the app stays put and the stream keeps delivering later links — consistent with the existing "bad links don't crash" behavior. - Changing the
decoratorslist now invalidates the memoized pages. With a stable builder, existing pages kept their old decorated subtree; the decorator list now participates in memo invalidation (compared element-wise, so stable decorators keep the memo). - Raised the Flutter lower bound to
>=3.24.0to match the API surface actually used (Navigator.onDidRemovePage,PopScope.onPopInvokedWithResult).
Fixes #1.
0.5.0
Correctness release for everything back-button-adjacent, driven by an adversarial audit of 0.4.0.
Highlights:
- System back routes innermost-first everywhere — tabs and nested displays now give dialogs, sheets, and a screen's PopScope/ConfirmPopScope first refusal before the stack pops (per-tab navigatorKeys + maybePop + live NavigationNotification tracking).
- Browser back/forward restores the full typed stack — every history entry carries a full-stack snapshot (RouteInformation.state), so history hops restore in-app depth the URL can't express. Automatic with links/restoreWith.
- AsyncRedirect: gates + hold + fail-closed — declare what's protected with gates:; gated navigation is held off screen while check runs (no flash of protected content), and a throwing check drops the navigation instead of allowing it.
- Core: a redirect no longer breaks pushForResult — the redirect result now reconciles against the proposed entries, keeping the pushed entry's id and awaiter.
- Tabs observers replaced with observersFor — a NavigatorObserver belongs to one Navigator; per-tab factories fix a guaranteed debug crash.
- Memoized pages now rebuild on Theme/locale/media-query changes; unmapped runtime links keep the app where it is; restoration and web-history docs made accurate.
Type-level breaking change: the delegates' Router config type is now NavRouteInformation (uri + state) instead of Uri; BackStackApp/BackStackTabsApp users are unaffected.
Full details in the CHANGELOG.