onSelectedHandler method

void onSelectedHandler({
  1. bool force = false,
})

Implementation

void onSelectedHandler({bool force = false}) {

  if (stateManager?.currentRow == null ||
      stateManager?.currentColumn == null ||
      stateManager?.currentCell == null) return;

  var mgr  = stateManager!;
  var row  = mgr.currentRow!;
  var col  = mgr.currentColumn!;
  var cell = mgr.currentCell!;

  // ignore this call
  if (cell == _lastSelectedCell && !force) return;
  var sameColumn = cell.column == _lastSelectedCell?.column;
  _lastSelectedCell = cell;

  // check/uncheck rows
  for (var row in mgr.checkedRows) {
    if (row != mgr.currentRow) {
      mgr.setRowChecked(row, false);
    }
  }

  // check this row
  if (row.checked != true) {
    mgr.setRowChecked(row, true);
  }

  // get row index
  var rowIdx = rows.indexOf(row);

  // get column index
  var colIdx = map.containsKey(cell.column)
      ? map[cell.column]!.index
      : -1;

  // set model selection
  widget.model.onSelect(rowIdx, colIdx);

  // cell is editable?
  bool editable = isEditable(col, row);

  // Editing a cell, then clicking another cell in the same column
  // that isn't editable, won't fire the onchange() method.
  // By clearing the _lastSelectedCell, editable will be set to false
  // on the next subsequent call to this routine.
  if (!editable && sameColumn)
  {
    _lastSelectedCell = null;
  }
  else
  {
    col.enableEditingMode = editable;
  }
}