addCell method

int addCell (
  1. int row,
  2. Widget child,
  3. {int colspan: 1,
  4. int rowspan: 1}
)

Adds cell at the specified row taking colspan and rowspan into account.

The column number will be determined automatically.

Implementation

int addCell(int row, Widget child, {int colspan = 1, int rowspan = 1}) {
  _grid[row] ??= {};
  var col = 0;
  while (_grid[row].containsKey(col)) {
    col++;
  }

  final index = _slots.length;
  _slots.add(_TableMetadataSlot(
      child: child, col: col, colspan: colspan, row: row, rowspan: rowspan));

  for (var r = 0; r < rowspan; r++) {
    for (var c = 0; c < colspan; c++) {
      var rr = row + r;
      _grid[rr] ??= {};

      var cc = col + c;
      if (!_grid[rr].containsKey(cc)) {
        _grid[rr][cc] = index;
      }
    }
  }

  return index;
}