android-templates
android-templates copied to clipboard
Revamp the UiState handling from the ViewModel to adapt multiple complex UI state logic
Why
According to the problem in the recent projects to handle multiple complex UI state logic, such as skeleton loading with partial loading or separate/multiple error handling between data flows, we had revamped the UiState handling from the ViewModel to adapt and cover these cases. It's time to bring that new approach to replace the existing deprecated approach injectLoading
from the base template. https://github.com/nimblehq/android-templates/blob/dc5d66c7733f23d3bd5cc8c9c0020440403c005f/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/base/BaseViewModel.kt#L24-L51
What we will do:
- Define the base
UiState
for data flow execution states. - Define the base
uiState
StateFlow<HashMap<Int, UiState>> inBaseViewModel
to handle separate UiState for each data flow. This helps avoid defining many states for all data flows in a ViewModel. - Sync all
UiState
withisLoading
StateFlow to handle the "global loading state".
Who Benefits?
Developers