progressBar function

String progressBar(
  1. num percentComplete, {
  2. int width = 50,
  3. AnsiPen? colorCompleted,
  4. AnsiPen? colorRemainder,
  5. String leftCap = '[',
  6. String rightCap = ']',
  7. String fill = '=',
  8. String empty = ' ',
})

Returns a text based progress bar for percentComplete.

Implementation

String progressBar(
  num percentComplete, {
  int width = 50,
  AnsiPen? colorCompleted,
  AnsiPen? colorRemainder,
  String leftCap = '[',
  String rightCap = ']',
  String fill = '=',
  String empty = ' ',
}) {
  percentComplete = percentComplete.clamp(0, 1.0);
  final internalWidth = width - 2;
  int count = (internalWidth * percentComplete).round();

  var done = fill * count;
  if (colorCompleted != null) {
    done = colorCompleted(done);
  }

  var remainder = empty * (internalWidth - count);
  if (colorRemainder != null) {
    remainder = colorRemainder(remainder);
  }
  return '[$done$remainder]';
}