plough 0.8.0
plough: ^0.8.0 copied to clipboard
Flutter package to render interactive network graph visualizations, featuring multiple layout algorithms, customizable appearance.
develop #
0.8.0 #
- [ADD] Smooth force-directed layout animation: nodes now visibly scatter from random positions and settle into place each time the graph is displayed, using a Ticker-driven incremental simulation instead of a single synchronous computation.
- [ADD]
GraphForceDirectedLayoutStrategy.stepsPerFrameparameter to control animation speed vs. smoothness (default: 3 iterations per frame). - [IMPROVE] Force-directed repulsion calculation upgraded from O(n²) to O(n log n) using a Barnes-Hut quadtree. New
barnesHutThetaparameter (default: 0.5) controls approximation accuracy. - [IMPROVE]
getIncomingLinks/getOutgoingLinksnow O(1) via adjacency index maintained onaddLink/removeLink/removeNode. - [IMPROVE] Stack-order sort result is cached and only recomputed when the order actually changes, eliminating a per-frame O(n log n) sort.
- [IMPROVE]
GraphNodeViewflattened from three nestedAnimatedBuilderwrappers to one, reducing widget tree depth per node. - [IMPROVE] Spatial grid index added to
GraphGestureManagerfor fast node hit-testing; rebuilt after each layout change. - [ADD] Large-graph sample scenes (200 / 300 / 500 nodes) in the example app for performance testing.
0.7.1 #
- [FIX] Fixed
nodeAnimationStartPositionbeing ignored during initial layout, causing nodes to animate from top-left corner instead of the specified position. - [CHANGE] Upgraded
freezed_annotationto ^3.1.0 andfreezed(dev) to ^3.2.5.
0.7.0 #
- [CHANGE] Removed
ListenablefromGraphEntityto prevent direct observation of individual entity state changes. - [CHANGE] Removed
appsdirectory as theworkbenchapplication has been migrated to an independent repository. - [CHANGE] Increased
touchSloptolerance for more forgiving tap detection. - [CHANGE] Standardized
touchSlopvalues tokTouchSlop * 4inGraphGestureManager's_isWithinSlopmethod and_TapStatefor improved gesture detection consistency. - [ADD] Unified
GraphViewBehaviorinteraction callbacks (e.g.,onTap,onDragStart,onSelectionChange) using newGraphEventobjects (GraphTapEvent,GraphDragStartEvent,GraphSelectionChangeEvent, etc. fromlib/src/interactive/events.dart). This replaces separate node/link specific callbacks (likeonNodeTap,onLinkTap) and simplifies handling events involving multiple entities. - [ADD]
Graph.clearSelection()now deselects all selected entities. - [ADD] Added
paddingparameter toGraphDefaultNodeRendererStyleto allow setting padding between a node's border and its content. - [ADD] Added
onDoubleTapcallback toGraphViewBehavior. - [FIX] Improved double-tap detection reliability by introducing a Pan Ready state to prevent tap timers from being cancelled prematurely during drag starts, leading to more accurate distinction between taps and drags.
- [FIX] Resolved a race condition with
Timer(Duration.zero)during double-tap state cleanup, enhancing gesture detection stability.
0.6.0 #
First release.
