onSelectedHandler method
void
onSelectedHandler(
{ - 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;
}
}