frictionFromState function

double frictionFromState({
  1. required AxisState state,
  2. required GestureBounds bounds,
  3. required double delta,
})

Friction-scaled delta given a per-axis state. Absent bound = blocked (returns 0). Absent friction = free (returns delta).

Implementation

double frictionFromState({
  required AxisState state,
  required GestureBounds bounds,
  required double delta,
}) {
  if (delta == 0) return 0;
  final boundConfig = bounds[state.activeBound];
  if (boundConfig == null) return 0;
  final fc = boundConfig.friction;
  if (fc == null) return delta;
  final friction = fc.forDirection(state.directionState);
  if (friction == null) return delta;
  return delta * (1.0 - friction.evaluate(state.progress));
}