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;
}
}