Summary
In this chapter, we studied the MVI architecture pattern and the benefits it provides to applications using reactive streams of data, by centralizing user and application actions into a unidirectional flow of data.
We then looked at how we can implement this pattern using Kotlin flows and the role it plays when combined with other patterns, such as MVP and MVVM, with a focus on MVVM. We can observe the downsides of the pattern on simple presentations, but its benefits become more visible in applications with complicated user interfaces that take in multiple user inputs, which can change the states of other inputs. In the chapter's exercise, we looked at how we can transition an application with MVVM to MVI and how it fits into Clean Architecture.
In the next chapter, we will take a step back and look at what we have implemented and studied so far. We will see what we can improve and how we can take advantage of the different layers of the application, as well as...