formatByteLine static method

  1. @visibleForTesting
_ProgressByteUpdate formatByteLine(
  1. FetchProgress progress
)

Formatter for showBytes

Implementation

@visibleForTesting
// ignore: library_private_types_in_public_api
static _ProgressByteUpdate formatByteLine(FetchProgress progress) {
  _ProgressByteUpdate update;
  final status = _fixedWidthStatus(progress.status);
  final downloaded = Format().bytesAsReadable(progress.downloaded);
  final total = Format().bytesAsReadable(progress.length, pad: false);

  final url = Format().limitString(progress.fetch.url);
  switch (progress.status) {
    case FetchStatus.initialising:
      update = _ProgressByteUpdate(0, '$status      ?/?      $url');
      break;

    case FetchStatus.connected:
    case FetchStatus.connecting:
    case FetchStatus.headers:
    case FetchStatus.response:
    case FetchStatus.error:
      update = _ProgressByteUpdate(0, '$status      ?/?      $url');
      break;
    case FetchStatus.downloading:
      if (progress.prior?.status == FetchStatus.downloading) {
        update = _ProgressByteUpdate(14, '$downloaded/$total');
      } else {
        update = _ProgressByteUpdate(0, '$status $downloaded/$total');
      }
      break;
    case FetchStatus.complete:
      update =
          _ProgressByteUpdate(0, '$status $downloaded/$total', newline: true);
      break;
  }

  return update;
}