recordUndoSnapshot method
void
recordUndoSnapshot(
- State captureState()
Implementation
void recordUndoSnapshot(State Function() captureState) {
if (_frameActive && _didRecordUndoSnapshot) {
return;
}
final action = _currentAction;
final currentState = captureState();
if (action != null &&
canCoalesce(
action,
lastAction: _lastAction,
lastMarker: _lastMarker,
currentState: currentState,
)) {
_didRecordUndoSnapshot = true;
return;
}
if (_undoStack.isNotEmpty && sameState(_undoStack.last, currentState)) {
_didRecordUndoSnapshot = true;
return;
}
_undoStack.add(currentState);
if (_undoStack.length > maxEntries) {
_undoStack.removeAt(0);
}
_redoStack.clear();
_didRecordUndoSnapshot = true;
}