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
dragProxyGeometrygetter 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 atpointer + 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
gapVisibleIndexpoints 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