Summary
In this chapter, we learned what a ViewModel
class is, we explored the concepts that define it, and we learned how to instantiate one. We tackled why a ViewModel
is useful as a single source of truth for the UI's state: to avoid illegal and undesired states.
For that to make sense, we explored how a UI is defined by its state and how to define such a state in Compose. We then understood what state hoisting is and how to separate widgets between stateless and stateful composables.
Finally, we put all these new concepts into practice by defining state in our Restaurants app, hoisting it, and then lifting it even higher into the newly created ViewModel
.
Finally, we learned how system-initiated process death occurs and how to allow the app to recover by restoring the previous state with the help of SavedStateHandle
.
In the next chapter, we will add real data to our Restaurants app by connecting it to our database using Retrofit.