animate method

Future<void> animate({
  1. required LudoPiece piece,
  2. required int steps,
  3. required void onStep(
    1. int newTrackPosition
    ),
})

Animates piece forward by steps cells, invoking onStep after each cell lands. Awaiting this future means all steps are complete.

onStep receives the new trackPosition after each step.

Implementation

Future<void> animate({
  required LudoPiece piece,
  required int steps,
  required void Function(int newTrackPosition) onStep,
}) async {
  _cancelled = false;
  int current = piece.trackPosition;

  for (var i = 0; i < steps; i++) {
    if (_cancelled) break;
    current++;
    onStep(current);
    await Future.delayed(Duration(milliseconds: stepDurationMs));
  }
}