run method

Future<T> run({
  1. required T initialData,
  2. StepListener? listener,
})

Implementation

Future<T> run({
  required T initialData,
  StepListener? listener,
}) async {
  var transaction = initialData;

  for (final step in steps) {
    listener?.onStepChanged(step, StepStatus.inProgress);

    try {
      final updatedTransaction = await step.handle(transaction);
      listener?.onStepChanged(step, StepStatus.completed);
      transaction = updatedTransaction;
    } on Exception catch (error) {
      listener?.onStepChanged(step, StepStatus.error, error);
      rethrow;
    }
  }

  return transaction;
}