adjustPages method
Adjusts page indexes after adding or removing a page.
If isAdd
is true, pages are shifted upwards. Otherwise, they are shifted downwards.
Implementation
Future<void> adjustPages(int pageIndex, {bool isAdd = true}) async {
final newHistory = <int, List<PaintContent>>{};
final newUndoStack = <int, List<PaintContent>>{};
_history.forEach((key, value) {
if (isAdd) {
newHistory[key >= pageIndex ? key + 1 : key] = value;
} else {
if (key != pageIndex) {
newHistory[key > pageIndex ? key - 1 : key] = value;
}
}
});
_undoStack.forEach((key, value) {
if (isAdd) {
newUndoStack[key >= pageIndex ? key + 1 : key] = value;
} else {
if (key != pageIndex) {
newUndoStack[key > pageIndex ? key - 1 : key] = value;
}
}
});
_history
..clear()
..addAll(newHistory);
_undoStack
..clear()
..addAll(newUndoStack);
if (!isAdd && _currentPage > pageIndex) {
_currentPage -= 1;
} else if (isAdd && _currentPage >= pageIndex) {
_currentPage += 1;
}
notifyListeners();
}