sliver_tree/_animation_coordinator library

Internal: facade over the four animation sources (standalone, per-operation groups, bulk, slide), plus the cross-source state and dispatch logic that span them.

Owns:

  • Cross-source per-nid state (_fullExtentByNid, _isPendingDeletionByNid, the union mirrors _isAnimatingByNid / _isExitingByNid).
  • The animation generation counter _animationGeneration (the broad counter; the bulk-specific counter lives on BulkAnimator).
  • The animating-keys cache + sparse-tracking lists used by _ensureAnimatingKeys.
  • The animation-listener channel (addListener / removeListener / notifyListeners).
  • The four sub-coordinators (composition, not inheritance).

Implements AnimationReader so RenderSliverTree can hold an abstract reference instead of the concrete coordinator (or the controller).

Status-change handlers and the standalone tick body STAY on TreeController — they cross structure / order / structural-notification concerns. The coordinator wires them as callbacks (see constructor).

Classes

AnimationCoordinator<TKey>
AnimationReader<TKey>
Narrow read interface that the render layer depends on instead of TreeController. Allows render-layer tests to stub animation reads without standing up a full controller.