format static method

String format(
  1. double bytes, {
  2. NegativeValueOptions options = NegativeValueOptions.defaults,
  3. int decimals = 2,
})

Format a byte value that can be negative.

Example:

print(NegativeByteFormatter.format(-500000));
// "-488.28 KB" (default)

print(NegativeByteFormatter.format(
  -500000,
  options: NegativeValueOptions.parentheses,
));
// "(488.28 KB)"

Implementation

static String format(
  double bytes, {
  NegativeValueOptions options = NegativeValueOptions.defaults,
  int decimals = 2,
}) {
  final isNegative = bytes < 0;
  final absBytes = bytes.abs();
  final converter = ByteConverter(absBytes);
  final baseStr = converter.display.auto(precision: decimals);

  if (options.mode == NegativeDisplayMode.custom &&
      options.customFormatter != null) {
    return options.customFormatter!(bytes, isNegative);
  }

  if (!isNegative) {
    return '${options.increasePrefix}$baseStr${options.increaseSuffix}';
  }

  switch (options.mode) {
    case NegativeDisplayMode.minusSign:
      return '${options.decreasePrefix}$baseStr${options.decreaseSuffix}';
    case NegativeDisplayMode.parentheses:
      return '($baseStr)';
    case NegativeDisplayMode.decreaseSuffix:
      return '$baseStr decrease';
    case NegativeDisplayMode.reductionSuffix:
      return '$baseStr reduction';
    case NegativeDisplayMode.lossSuffix:
      return '$baseStr loss';
    case NegativeDisplayMode.absolute:
      return baseStr;
    case NegativeDisplayMode.custom:
      // Already handled above
      return baseStr;
  }
}