A util class that implements undo/redo on a group of states
undo-redo-manager.demo.webm
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.aabadaa:undoRedoManager:<version>'
}
- Define your states in the viewModel using
SavedStateHandle
val text1 = savedStateHandle.getStateFlow("text1", "")
val text2 = savedStateHandle.getStateFlow("text2", "")
- Create an object of
UndoRedoManager
private val undoRedoManager = UndoRedoManager(stateProvider, setOf("text1", "text2"), maxSize = 100)
- Use
commit
method to save states changes
fun onText2Changed(text: String) {
savedStateHandle.set("text2", text)
undoRedoManager.commit()
}
- Call undo/redo methods to undo or redo
undoRedoManager.undo()
undoRedoManager.redo()
check the full example in the MainActivity
Designed and developed by 2023 AbdulAleem Alsayed
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.