adjustPages method
Adjust image mappings when a page is added or removed
Implementation
Future<void> adjustPages(int pageIndex, {bool isAdd = true}) async {
final newImageBoxes = <int, List<ImageBox>>{};
final newHistory = <int, List<ImageAction>>{};
final newUndoStack = <int, List<ImageAction>>{};
_imageBoxes.forEach((key, value) {
if (isAdd) {
newImageBoxes[key >= pageIndex ? key + 1 : key] = value;
} else {
if (key != pageIndex) {
newImageBoxes[key > pageIndex ? key - 1 : key] = value;
}
}
});
_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;
}
}
});
_imageBoxes
..clear()
..addAll(newImageBoxes);
_history
..clear()
..addAll(newHistory);
_undoStack
..clear()
..addAll(newUndoStack);
if (!isAdd && _currentPage > pageIndex) {
_currentPage -= 1;
} else if (isAdd && _currentPage >= pageIndex) {
_currentPage += 1;
}
notifyListeners();
}