Skip to main content

swift_transitions 0.3.0 copy "swift_transitions: ^0.3.0" to clipboard
swift_transitions: ^0.3.0 copied to clipboard

iOS's navigation transitions for Flutter: the iOS 18 zoom transition with its interactive dismissal, and the push, both fitted frame by frame against the real thing.

Changelog #

All notable changes to this package are documented here. The format follows Keep a Changelog, and the package adheres to Semantic Versioning.

Unreleased #

0.3.0 - 2026-09-16 #

Changed #

  • A zoom route is opaque, as a CupertinoPageRoute is: once the flight has landed the routes beneath it are neither painted nor ticked, where before every one of them was rasterised on every frame the page drew. A covered route with maintainState false loses its source while obscured.
  • The page under a zoom route is painted from a snapshot taken on the first frame the route covers it, as UIKit paints the view controller it zooms from, and not again until the route has gone; what the page paints past its bounds runs on into the strip the scale uncovers, as it does natively. A hidden source and any platform view are left out of the snapshot.

Fixed #

  • A committed dismissal pops while the navigator still reports the gesture, so a hero flight the grab began — a CupertinoNavigationBar's — carries on into the landing rather than being started again, which asserted in debug.
  • A committed dismissal of a route without a source no longer asserts as its landing overshoots.

0.2.1 - 2026-09-15 #

Fixed #

  • A back swipe from anywhere yields to a pan on the page — a swipe deck's card — not only to a horizontal scrollable, and a drag that opens toward the leading edge is left to the page rather than claimed and dropped.

0.2.0 - 2026-09-14 #

Added #

  • ZoomTransitionOptions.backGestureRegion, where the zoom route's back swipe may start.
  • ZoomDismissPhysics.anywhereSwipeDismissThreshold, the commit line of a back swipe begun anywhere on the page (0.79; the edge swipe's stays 0.70).

Changed #

  • The back swipe starts anywhere on the page by default, on both routes, as on iOS 26; a swipe begun on the leading edge is still the edge swipe and wins over a horizontal scrollable, one begun elsewhere yields to it.
  • The push page's swipe from anywhere waits out 27 pt and commits from 42 % of the width; the zoom card's waits out 18 pt and commits below 0.79, measured against native.
  • ZoomDismissGestures.edgeSwipe and ZoomGesture.edgeSwipe are backSwipe; ZoomDismissPhysics.dismissThreshold is edgeSwipeDismissThreshold.

0.1.2 - 2026-09-11 #

Fixed #

  • A zoom's flight lands on the source's resting rect rather than one read back through the covered page's scale, which was 9 % too big under a deferred push.
  • A pop's cross-fade comes in from the start of the flight, as native's does, instead of over its last half.

0.1.1 - 2026-09-11 #

Added #

  • ZoomAlignmentRectContext.pageContext and rectOf, so an alignment rect can be measured from a key once the page is laid out.

Fixed #

  • An aligned zoom scales the page as one picture so the art lands on the source, as UIKit's alignmentRectProvider does, rather than closing a window in on it.
  • A ZoomTransitionSource that is not being painted (an offstage tab, a hidden Visibility) no longer takes part in a flight.

0.1.0 - 2026-09-11 #

First release: iOS's navigation transitions for Flutter, fitted against a native reference app frame by frame. The calibrated constants and the known deviations are in docs/design.md.

Added #

  • ZoomPageRoute, ZoomPage and ZoomTransitionSource: the iOS 18 zoom transition, with ZoomTransitionOptions mirroring UIZoomTransitionOptions.
  • Interactive dismissal by pan, edge swipe and pinch, interruptible throughout, with ZoomDismissPhysics carrying the fitted response and ZoomScrollController handing a top-edge drag across from a scroll view.
  • SwiftPageRoute, SwiftPage and SwiftPageTransitionsBuilder: the iOS push with the measured curve, dim and display-radius corner clip, and a back swipe from the leading edge or anywhere (BackGestureRegion).
  • DisplayCornerRadii, SwiftCurves and SwiftSprings.
2
likes
160
points
469
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

iOS's navigation transitions for Flutter: the iOS 18 zoom transition with its interactive dismissal, and the push, both fitted frame by frame against the real thing.

Repository (GitHub)
View/report issues
Contributing

Topics

#transition #animation #navigation #cupertino #ios

License

MIT (license)

Dependencies

flutter

More

Packages that depend on swift_transitions