Flow is the Kotlin approach for handling a "cold stream" of items, where the work to build the items only happens once something has subscribed to the stream.

A simple way to create a Flow is to use the flow() top-level function. You provide a lambda expression, and it calls emit() for every item that should be placed into the stream. Here, we emit a series of random numbers, with a delay between each.

A simple way to consume a Flow is to call collect(). This takes a lambda expression, and it is passed each emitted item from the Flow. collect() is a suspend function, so we need to call collect() from inside of another suspend function or from a coroutine builder, such as launch().

You can learn more about this in:
Run Edit