interactive_viewer_vector 0.2.0
interactive_viewer_vector: ^0.2.0 copied to clipboard
Fork of the Flutter SDK InteractiveViewer that updates the RenderTransform directly (markNeedsPaint) instead of calling setState on every pan/zoom frame. No widget tree rebuild during pan/zoom interactions.
Changelog #
0.2.0 #
- Added
clampTranslate(Matrix4 matrix, Offset translation)onTransformationControllerVector. Delegates to the State's_matrixTranslatefor full boundary clamping (viewport + boundaryMargin). Falls back to rawtranslateByDoublewhen noInteractiveViewerVectoris attached. Consumers can now pan with boundary clamping without duplicating the fork's internal clamping logic. - Injected
ClampTranslateFncallback from_InteractiveViewerVectorStateinto the controller via_clampTranslatefield. Wired ininitState, re-wired indidUpdateWidget(controller swap), cleared indispose. - Example app rewritten:
StatelessWidgetwithValueNotifierfor nodes + drag state (zerosetState). Custom pan viaclampTranslate(panEnabled: false), manual hit-test for node dragging, scroll-to-pan. Node "DRAG ME" (yellow) added for drag testing. - Added 9 unit tests for
clampTranslate(test/clamp_translate_test.dart): fallback mode (3), boundary clamping (6 — small translation passes, large translation clamped, scale preserved, low-scale sync, anti-drift over 50 iterations). - Example integration tests updated: pan/zoom scenario, node drag (clampTranslate does not steal gesture), low-scale boundary respect.
0.1.1 #
- Removed all dead rotation gesture code from the SDK fork (unused
_rotateEnabled,_matrixRotate,_getAxisAlignedBoundingBoxWithRotation,_GestureType.rotate, two TODOs referencing flutter/flutter#57698). Rotation was designed for geographic map use cases, never completed upstream, and irrelevant for this package's target use cases. - CI/CD pipeline added (GitHub Actions): format check (line 120), analyze, unit + widget tests, builds for Android, Linux, Windows, macOS, iOS, and auto-release on main push.
0.1.0 #
- Initial public release.
- Fork of the Flutter SDK
InteractiveViewerwith directRenderTransformupdates (markNeedsPaint) instead ofsetStateduring pan/zoom. - Same public API as the SDK widget, renamed:
InteractiveViewerVector,TransformationControllerVector,InteractiveViewerVectorWidgetBuilder. - Unit tests (geometry helpers, controller, constructor assertions), widget tests (no-rebuild guarantee, gestures, builder constructor) and an example app with integration test.
- Native platforms only: Android, iOS, macOS, Windows, Linux.