minor
This commit is contained in:
parent
39d35c40be
commit
0472cb23f6
1 changed files with 11 additions and 7 deletions
|
@ -206,30 +206,34 @@ class _GridSelectionGestureDetectorState<T> extends State<GridSelectionGestureDe
|
||||||
void _toggleSelectionToIndex(int toIndex) {
|
void _toggleSelectionToIndex(int toIndex) {
|
||||||
if (toIndex == -1) return;
|
if (toIndex == -1) return;
|
||||||
|
|
||||||
|
Iterable<T> getRange(int start, int end) => items.getRange(start, end);
|
||||||
final selection = context.read<Selection<T>>();
|
final selection = context.read<Selection<T>>();
|
||||||
|
void addRange(int start, int end) => selection.addToSelection(getRange(start, end));
|
||||||
|
void removeRange(int start, int end) => selection.removeFromSelection(getRange(start, end));
|
||||||
|
|
||||||
if (_selecting) {
|
if (_selecting) {
|
||||||
if (toIndex <= _fromIndex) {
|
if (toIndex <= _fromIndex) {
|
||||||
if (toIndex < _lastToIndex) {
|
if (toIndex < _lastToIndex) {
|
||||||
selection.addToSelection(items.getRange(toIndex, min(_fromIndex, _lastToIndex)));
|
addRange(toIndex, min(_fromIndex, _lastToIndex));
|
||||||
if (_fromIndex < _lastToIndex) {
|
if (_fromIndex < _lastToIndex) {
|
||||||
selection.removeFromSelection(items.getRange(_fromIndex + 1, _lastToIndex + 1));
|
removeRange(_fromIndex + 1, _lastToIndex + 1);
|
||||||
}
|
}
|
||||||
} else if (_lastToIndex < toIndex) {
|
} else if (_lastToIndex < toIndex) {
|
||||||
selection.removeFromSelection(items.getRange(_lastToIndex, toIndex));
|
removeRange(_lastToIndex, toIndex);
|
||||||
}
|
}
|
||||||
} else if (_fromIndex < toIndex) {
|
} else if (_fromIndex < toIndex) {
|
||||||
if (_lastToIndex < toIndex) {
|
if (_lastToIndex < toIndex) {
|
||||||
selection.addToSelection(items.getRange(max(_fromIndex, _lastToIndex), toIndex + 1));
|
addRange(max(_fromIndex, _lastToIndex), toIndex + 1);
|
||||||
if (_lastToIndex < _fromIndex) {
|
if (_lastToIndex < _fromIndex) {
|
||||||
selection.removeFromSelection(items.getRange(_lastToIndex, _fromIndex));
|
removeRange(_lastToIndex, _fromIndex);
|
||||||
}
|
}
|
||||||
} else if (toIndex < _lastToIndex) {
|
} else if (toIndex < _lastToIndex) {
|
||||||
selection.removeFromSelection(items.getRange(toIndex + 1, _lastToIndex + 1));
|
removeRange(toIndex + 1, _lastToIndex + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_lastToIndex = toIndex;
|
_lastToIndex = toIndex;
|
||||||
} else {
|
} else {
|
||||||
selection.removeFromSelection(items.getRange(min(_fromIndex, toIndex), max(_fromIndex, toIndex) + 1));
|
removeRange(min(_fromIndex, toIndex), max(_fromIndex, toIndex) + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue