InlineKeyboard.grid constructor

InlineKeyboard.grid(
  1. List<List<String>> pairs, {
  2. required int columns,
})

Creates an inline keyboard with a grid layout.

Implementation

factory InlineKeyboard.grid(
  List<List<String>> pairs, {
  required int columns,
}) {
  if (columns <= 0) {
    throw ArgumentError('Columns must be greater than 0');
  }

  final buttons = <List<InlineKeyboardButton>>[];
  for (int i = 0; i < pairs.length; i += columns) {
    final rowPairs = pairs.skip(i).take(columns);
    final row = rowPairs.map((pair) {
      if (pair.length != 2) {
        throw ArgumentError(
          'Each button pair must contain exactly 2 elements: [text, data]',
        );
      }
      return InlineKeyboardButton(text: pair[0], callbackData: pair[1]);
    }).toList();
    buttons.add(row);
  }

  return InlineKeyboard(inlineKeyboard: buttons);
}