Conclusion
In this lesson, you:
- Learned the main difference between reactive programming and imperative programming.
 - Learned how to replace imperative code with the reactive approach.
 - Saw some key concepts of creating reactive streams and pushing some data to them.
 - Saw that coroutines are tightly related with Kotlin Flow.
 
In the following lesson, you’ll learn more about core concepts, different ways of creating a Flow, and what collecting a flow means.