formatSummary static method

String formatSummary(
  1. List<SizeDelta> deltas, {
  2. int decimals = 2,
})

Format multiple deltas as a summary.

Example:

print(NegativeByteFormatter.formatSummary([
  SizeDelta(1000, 500),
  SizeDelta(2000, 3000),
]));
// "Net: +512 B (1 increase, 1 decrease)"

Implementation

static String formatSummary(
  List<SizeDelta> deltas, {
  int decimals = 2,
}) {
  if (deltas.isEmpty) return 'No changes';

  final netChange = deltas.fold<double>(
    0,
    (sum, delta) => sum + delta.difference,
  );

  final increases = deltas.where((d) => d.isIncrease).length;
  final decreases = deltas.where((d) => d.isDecrease).length;
  final unchanged = deltas.where((d) => d.isUnchanged).length;

  final netStr = format(netChange,
      decimals: decimals, options: NegativeValueOptions.delta);

  final parts = <String>[];
  if (increases > 0) {
    parts.add('$increases increase${increases > 1 ? 's' : ''}');
  }
  if (decreases > 0) {
    parts.add('$decreases decrease${decreases > 1 ? 's' : ''}');
  }
  if (unchanged > 0) {
    parts.add('$unchanged unchanged');
  }

  return 'Net: $netStr (${parts.join(', ')})';
}