run method

Future<PipelineResult> run(
  1. List<Slide> slides,
  2. List<File> assets
)

Implementation

Future<PipelineResult> run(
  List<Slide> slides,
  List<File> assets,
) async {
  final futures = <Future<TaskController>>[];

  Future<TaskController> runEachSlide(Slide slide) async {
    var controller = TaskController(slide: slide, assets: assets);
    for (var task in processors) {
      controller = await task.run(controller);
    }
    return controller;
  }

  for (var slide in slides) {
    futures.add(runEachSlide(slide));
  }

  final controllers = await Future.wait(futures);

  final result = (
    slides: controllers.map((e) => e.slide).toList(),
    neededAssets: controllers.expand((e) => e.neededAssets).toList(),
  );

  return result;
}