selectRow method

void selectRow(
  1. int index, {
  2. bool additive = false,
  3. bool range = false,
})

Select the row at index. additive toggles it (multi), range extends from the anchor to index. Also moves the editing cursor onto the row.

Implementation

void selectRow(int index, {bool additive = false, bool range = false}) {
  if (!selectionIsRowMode || index < 0 || index >= rowCount) return;
  _sel = CellRef(index, _sel.col);
  if (selectionMode == EditableSelectionMode.singleRow) {
    _selRows
      ..clear()
      ..add(index);
    _anchorRow = index;
  } else if (range) {
    final lo = index < _anchorRow ? index : _anchorRow;
    final hi = index < _anchorRow ? _anchorRow : index;
    if (!additive) _selRows.clear();
    for (var r = lo; r <= hi; r++) {
      _selRows.add(r);
    }
  } else if (additive) {
    _selRows.contains(index) ? _selRows.remove(index) : _selRows.add(index);
    _anchorRow = index;
  } else {
    _selRows
      ..clear()
      ..add(index);
    _anchorRow = index;
  }
  notifyListeners();
}