fileSize function

String fileSize(
  1. dynamic fileSize, [
  2. int round = 3
])

Obtain the corresponding display information through file size conversion

文件大小换算为相应的展示信息

Implementation

String fileSize(dynamic fileSize, [int round = 3]) {
  var bDivider = 1024;
  int size;
  try {
    size = int.parse(fileSize.toString());
  } catch (e) {
    throw ArgumentError('Can not parse the size parameter: $e');
  }

  var uRound = size % bDivider == 0 ? 0 : round;

  if (size < bDivider) {
    return '$size B';
  }

  var kbDivider = bDivider * bDivider;
  if (size < kbDivider) {
    return '${(size / bDivider).toStringAsFixed(uRound)} KB';
  }

  var mbDivider = kbDivider * bDivider;
  if (size < mbDivider) {
    return '${(size / kbDivider).toStringAsFixed(uRound)} MB';
  }

  var gbDivider = mbDivider * bDivider;
  if (size < gbDivider) {
    return '${(size / mbDivider).toStringAsFixed(uRound)} GB';
  }

  var tbDivider = gbDivider * bDivider;
  if (size < tbDivider) {
    return '${(size / gbDivider).toStringAsFixed(uRound)} TB';
  }

  var pbDivider = tbDivider * bDivider;
  if (size < pbDivider) {
    return '${(size / tbDivider).toStringAsFixed(uRound)} PB';
  }

  return '${(size / tbDivider).toStringAsFixed(round)} PB';
}