dispatchSelectionEvent method Null safety
- SelectionEvent event
override
Handles the SelectionEvent sent to this object.
The subclasses need to update their selections or delegate the SelectionEvents to their subtrees.
The event
s are subclasses of SelectionEvent. Check
SelectionEvent.type to determine what kinds of event are dispatched to
this handler and handle them accordingly.
See also:
- SelectionEventType, which contains all of the possible types.
Implementation
@override
SelectionResult dispatchSelectionEvent(SelectionEvent event) {
final bool selectionWillbeInProgress = event is! ClearSelectionEvent;
if (!_selectionInProgress && selectionWillbeInProgress) {
// Sort the selectable every time a selection start.
selectables.sort(compareOrder);
}
_selectionInProgress = selectionWillbeInProgress;
_isHandlingSelectionEvent = true;
late SelectionResult result;
switch (event.type) {
case SelectionEventType.startEdgeUpdate:
case SelectionEventType.endEdgeUpdate:
result = handleSelectionEdgeUpdate(event as SelectionEdgeUpdateEvent);
break;
case SelectionEventType.clear:
result = handleClearSelection(event as ClearSelectionEvent);
break;
case SelectionEventType.selectAll:
result = handleSelectAll(event as SelectAllSelectionEvent);
break;
case SelectionEventType.selectWord:
result = handleSelectWord(event as SelectWordSelectionEvent);
break;
}
_isHandlingSelectionEvent = false;
_updateSelectionGeometry();
return result;
}