This chapter covered additional aspects of the
ComposeUnitConverter example. We continued the exploration of the
ViewModel pattern we began looking at in the Using a ViewModel section of Chapter 5, Managing the State of Your Composable Functions. This time, we added business logic to the
ViewModel and injected an object that can persist and retrieve data.
The Keeping your composables responsive section revisited one of the key requirements of a composable function. Recomposition can occur very often, therefore composables must be as fast as possible, which dictates what code inside them may and may not do. I showed you how a simple loop can cause a Compose app to stop responding, and how coroutines counteract this.
In the final main section, Understanding side effects, we examined so-called side effects and used
LaunchedEffect to implement a simple counter.
In Chapter 8, Working with Animations, you will learn how to show and hide UI elements with animations. We will...