DragProbe<TKey> class

The session's resolution core: the ONE owner of grab geometry and the ONE site that turns a PointerSample into a TreeDropTarget. Both the per-event pipeline (DragSession.resolve) and endDrag's commit re-resolution go through resolveTarget, so the committed slot is always the slot the feedback showed.

Constructors

DragProbe({required ReorderRenderPort<TKey> renderPort, required DropZoneResolver<TKey> resolver, required TKey draggedKey, required int depthForPointerX(double sliverLocalX)?})

Properties

grabDy → double
Drag-proxy grab geometry, captured once by captureGrab: the pointer's offset within the dragged row (so the floating preview doesn't jump to the pointer) and the row's extent (to size the preview). Read by the public dragProxyGeometry getter and the settler's release-anchor math.
no setter
grabRowExtent → double
no setter
hashCode → int
The hash code for this object.
no setterinherited
probeDy → double
Touch-first probe offset: shifts slot resolution from the raw pointer to the PROXY MIDPOINT, grabRowExtent / 2 - grabDy. On touch there is no visible cursor, so the card in hand is the only thing the user can steer by and selection has to track it. Non-zero only when the caller enables the midpoint probe (make-room plus release-settle, where the anchor IS the visible floating card) and the grab capture succeeded. A session constant, so the whole resolution pipeline simply probes at pointer + probeDy.
no setter
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

captureGrab({required PointerSample start, required bool midpointProbe}) → void
Captures grab geometry once at session start against the start sample.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
resolveTarget({required PointerSample? sample, required TreeDropTarget<TKey>? previous}) → TreeDropTarget<TKey>?
Finds the live row under the probe, a pinned header first (ReorderRenderPort.findPinnedRowAtPaintedY) and otherwise the row painted there (ReorderRenderPort.findRowAtPaintedY), and hands classification to the DropZoneResolver. Pending-deletion rows are vanishing and cannot be valid drop targets; both lookups skip them. While the probe is inside a pinned band the resolved slot is the header's, so gapVisibleIndex points at the header's STRUCTURAL visible index, which may be scrolled off-screen and the make-room gap opens where the user cannot see it: the same trade hit-testing takes, and strictly better than resolving against an unrelated row.
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited