recordUndoSnapshot method

void recordUndoSnapshot(
  1. 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;
}