photo_zoom 1.0.1
photo_zoom: ^1.0.1 copied to clipboard
Pan, zoom, rotate and swipe a photo gallery. Double tap and pinch zoom where you touch; mouse wheel on desktop. A type-safe, maintained alternative to photo_view.
1.0.1 #
- Call the package an alternative to
photo_viewrather than a drop-in. Moving across is usually just a change of import, but the migration table in the readme lists cases that need an edit:minScale: 0.5becomesminScale: PhotoViewScale.value(0.5), the controller is aValueNotifierinstead of a stream, andtightModeis gone. "Drop-in" promised none of that. Description only; no code change.
1.0.0 #
First stable release. The API below is what 1.0 freezes.
- Fix
PhotoViewComputedScale's operators accepting scales the absolute scale refuses.PhotoViewScale.valuehas always asserted on a negative or a NaN, butcontained * xandcovered / xtook anything. A NaN — the realistic source is a caller's own arithmetic,contained * (a / b)with both zero — travelled into the widget and came back out asInvalid argument(s): NaNfromclamp, orUnsupported operation: Infinity or NaN toIntfrom layout, depending on which parameter carried it. Neither message names the parameter, so the error surfaces far from its origin. Both operators now assert with a message that says which one produced what. Infinity stays legal: it ismaxScale's default and means "no upper limit".
Verified unchanged for this release, by driving each case rather than reading
for it: a zero-size viewport, an external controller or scale-state controller
disposed before the view, a gallery built with itemCount: 0, a gallery whose
itemCount shrinks while the last page is showing, writes to a controller that
outlives its view, extreme controller values (scale 0 and 1e9, position 1e9,
rotation 1e9), five double-taps interrupting each other's animations, a dispose
mid-animation, and an orientation change while zoomed in. None misbehaved.
0.2.1 #
- Fix swipe to dismiss going dead once the view is zoomed out below the
initial scale. The gate compared the scale to
scaleBoundaries.initialScaleinstead of checking whether the child had room to pan, and the defaultminScaleisPhotoViewScale.value(0), so a pinch or a controller write intozoomedOutleft the drag unable to dismiss. It also could not pan:clampPositioncollapses every write toOffset.zeroonce the child no longer overflows the viewport, so the drag produced no visible feedback either.
0.2.0 #
- Add opt-in swipe to dismiss. Pass
onDismisstoPhotoView,PhotoViewGalleryorPhotoViewGalleryPageOptionsand a single-finger drag at the rest scale slides the image and fades the background; releasing pastdismissThreshold(a fraction of the viewport height, 0.2 by default) calls it, usually to pop the route, and a shorter drag springs back. A drag while zoomed still pans. Off by default: with noonDismissnothing changes.
0.1.4 #
- Declare the demo in
pubspec.yamlso pub.dev shows it on the package page. The recording was already in the repository and in the README, but pub.dev only renders what thescreenshots:field points at, so anyone landing on the page from search saw text where the demo should have been.
0.1.3 #
- Docs: sharpen the pub.dev description to lead with the value and the terms people search.
0.1.2 #
- Docs: tightened the README wording and visuals.
0.1.1 #
- Correct the migration table. Only the double tap recenters in photo_view:
a pinch updates the scale state through
setInvisibly, which notifies no listener, so it never reaches the recentering path. The table claimed both.
0.1.0 #
Initial release.
PhotoView: pan, pinch zoom, double tap cycle, optional rotation, hero transitions, loading and error builders, andPhotoView.customChildfor zooming an arbitrary widget.PhotoViewGallery: aPageViewof photos, from a list or built on demand. Each page keeps its own zoom, and hands a drag to the page view once its photo is panned to the edge.PhotoViewControllerandPhotoViewScaleStateController:ValueNotifiers that read and drive the transform and the double tap cycle.PhotoViewScale: typed scale limits, eitherPhotoViewScale.valueor aPhotoViewComputedScale.contained/.covered, with*and/to offset them.- Zoom anchors at the touch, pointer or tap, rather than at
basePosition. enableScrollZoom: mouse wheel zooms at the pointer and a two-finger trackpad scroll pans. Events that would change nothing are left to an ancestor scrollable.- Zoom level and zoom actions exposed to screen readers; reduced motion honoured.
The API follows the photo_view package by Renan C. Araújo. See "Migrating from photo_view" in the README for the differences.