grid static method

void grid(
  1. List<String> items
)

Display a grid of items (auto-fit to terminal width)

Implementation

static void grid(List<String> items) {
  if (items.isEmpty) return;

  final width = terminalWidth;
  final maxItemLength = items.map((e) => e.length).reduce((a, b) => a > b ? a : b);
  final columnWidth = maxItemLength + 4;
  final columns = (width / columnWidth).floor().clamp(1, items.length);

  for (var i = 0; i < items.length; i += columns) {
    final row = items.skip(i).take(columns).toList();
    final line = row.map((item) => item.padRight(columnWidth)).join();
    stdout.writeln(line);
  }
}