Book Image

Kickstart Modern Android Development with Jetpack and Kotlin

By : Catalin Ghita
5 (1)
Book Image

Kickstart Modern Android Development with Jetpack and Kotlin

5 (1)
By: Catalin Ghita

Overview of this book

With Jetpack libraries, you can build and design high-quality, robust Android apps that have an improved architecture and work consistently across different versions and devices. This book will help you understand how Jetpack allows developers to follow best practices and architectural patterns when building Android apps while also eliminating boilerplate code. Developers working with Android and Kotlin will be able to put their knowledge to work with this condensed practical guide to building apps with the most popular Jetpack libraries, including Jetpack Compose, ViewModel, Hilt, Room, Paging, Lifecycle, and Navigation. You'll get to grips with relevant libraries and architectural patterns, including popular libraries in the Android ecosystem such as Retrofit, Coroutines, and Flow while building modern applications with real-world data. By the end of this Android app development book, you'll have learned how to leverage Jetpack libraries and your knowledge of architectural concepts for building, designing, and testing robust Android applications for various use cases.
Table of Contents (17 chapters)
1
Part 1: Exploring the Core Jetpack Suite and Other Libraries
7
Part 2: A Guide to Clean Application Architecture with Jetpack Libraries
13
Part 3: Diving into Other Jetpack Libraries

Hoisting state in Compose

Composable functions are usually categorized in terms of state handling in two main categories:

  • Stateful, which allows the composable to hold and manage its state. Stateful composables are those functions where the caller (or parent composable) doesn't need to manage the state. They model basic UI interactions such as animations or expanding content, and they are usually okay to be stateful and hold a State object.
  • Stateless, which allows the composable to delegate the state management and to forward event callbacks to its parent composable. Composables that not only impact the UI as their state changes but are also of interest to the presentation or business logic are usually ok to be stateless. This way, the ViewModel component can be the only source of truth for their state to control and manage UI changes but also to avoid illegal states.

In our case, state changes when a restaurant is marked as a favorite or not. Since we want...