getFlipSlideDeltaNid method

double getFlipSlideDeltaNid(
  1. int nid
)

Internal-use-only: FLIP-only Y slide delta for the live nid, EXCLUDING any held make-room preview offset. 0.0 when no FLIP slide is in flight for nid.

GHOST-LIFECYCLE READ. Not for painted positions: painted position is structural + FLIP + preview, which is getSlideDeltaNid, and every paint, hit-test, snapshot and overreach site must keep using that. This exists for the one question that is genuinely FLIP-only: whether a ghost, EDGE or EXIT, still has a slide to animate. Both kinds are artifacts of a FLIP slide, the edge ghosts in _ghost_registry.dart and the exit ghosts in RenderSliverTree's _ExitGhost records, so a ghost whose FLIP delta has reached zero is settled and must retire even while a preview holds a non-zero offset on the same row. Reading the composed delta there retained ghosts for the whole of a drag, which forced every drop-target lookup onto the O(N) full scan (RenderSliverTree.findRowAtPaintedY).

Its sibling getHeldPreviewDeltaNid answers the complementary question and is NOT a competing lifecycle read: an exit ghost converges on its anchor's SETTLED position, which under a held preview is structural + preview, so that one site SPLITS the composed delta rather than choosing a half of it. The identity getSlideDeltaNid == getFlipSlideDeltaNid + getHeldPreviewDeltaNid is what keeps the two halves from drifting.

No X counterpart is needed: getSlideDeltaXNid is already FLIP-only because previews are Y offsets.

Implementation

double getFlipSlideDeltaNid(int nid) => _slide.deltaForNid(nid);