maxAbsDelta property

double get maxAbsDelta

TERMINAL bound on every offset this engine will produce from now on, composed into the layout overreach bound so preview-shifted rows stay built.

max(|current|, |target|) per entry, not |current|. An entry lerps from its start to its target and then HOLDS there, so the target is where it is going and the current value is where it is; the larger of the two bounds the whole remaining animation. That is what lets a consumer widen its admission window ONCE per retarget instead of re-checking on every tick as the offset grows. current stays in the max for a release, whose target is 0 while the row is still displaced.

Implementation

double get maxAbsDelta {
  double m = 0.0;
  for (final entry in _entries.values) {
    final current = entry.current.abs();
    final target = entry.target.abs();
    final d = current > target ? current : target;
    if (d > m) {
      m = d;
    }
  }
  return m;
}