redo static method

void redo()

Re-applies the most recently undone mutation (or batch of mutations).

Implementation

static void redo() {
  if (_redoStack.isEmpty) return;
  final item = _redoStack.removeLast();

  final isDisposed = item is OrbitUndoEntry
      ? item.store._disposed
      : (item as OrbitUndoGroup).entries.every((e) => e.store._disposed);
  if (isDisposed) return;

  _isRestoring = true;
  try {
    Orbit.batch(() {
      if (item is OrbitUndoEntry) {
        if (!item.store._disposed) {
          item.store.mutate(
            () => (item.store as Undoable).restore(item.after),
            label: 'redo',
          );
        }
      } else if (item is OrbitUndoGroup) {
        for (final entry in item.entries) {
          if (!entry.store._disposed) {
            entry.store.mutate(
              () => (entry.store as Undoable).restore(entry.after),
              label: 'redo',
            );
          }
        }
      }
    }, label: item is OrbitUndoGroup ? (item.label ?? 'redo') : 'redo');

    _undoStack.add(item);
  } finally {
    _isRestoring = false;
  }
}