flatMapLatest  
  inline fun <T, R> Flow<T>.flatMapLatest(crossinline transform: suspend (value: T) -> Flow<R>): Flow<R>
Content copied to clipboard
Returns a flow that switches to a new flow produced by transform function every time the original flow emits a value. When the original flow emits a new value, the previous flow produced by transform block is cancelled.
For example, the following flow:
flow {
    emit("a")
    delay(100)
    emit("b")
}.flatMapLatest { value ->
    flow {
        emit(value)
        delay(200)
        emit(value + "_last")
    }
}Content copied to clipboard
produces a b b_last
This operator is buffered by default and size of its output buffer can be changed by applying subsequent buffer operator.