withProgress<T> static method

Future<void> withProgress<T>(
  1. String title,
  2. List<Future<T> Function()> tasks, {
  3. List<String>? taskNames,
})

Run a list of tasks with progress tracking

Implementation

static Future<void> withProgress<T>(
  String title,
  List<Future<T> Function()> tasks, {
  List<String>? taskNames,
}) async {
  print('');
  info(title);

  final OracularProgressState progress = createProgress(tasks.length);

  for (int i = 0; i < tasks.length; i++) {
    if (taskNames != null && i < taskNames.length) {
      stdout.write('\r  ${taskNames[i]}...'.padRight(60));
    }
    await tasks[i]();
    progress.increment();
  }

  print('');
  success('$title complete!');
}