package Ġcom . ink applications . coroutines Ċ Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . ensure Active Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlin . coroutines . coroutine Context Ċ Ċ /** Ċ Ġ* ĠCollect Ġa Ġflow Ġafter Ġensuring Ġthat Ġthe Ġcontext Ġis Ġcurrently Ġactive . Ċ Ġ* Ċ Ġ* ĠFun - Fact : ĠFlow s Ġcan Ġbe Ġres umed Ġin Ġa Ġscope Ġthat 's Ġnot Ġcurrently Ġactive . Ċ Ġ* ĠThis Ġprevents Ġthat Ġby Ġthrowing Ġa Ġcancellation Ġexception Ġif Ġthe Ġparent Ċ Ġ* Ġscope Ġisn 't Ġactive Ġbefore Ġinvoking Ġthe Ġ[ action ]. Ċ Ġ*/ Ċ suspend Ġinline Ġfun Ġ< T > ĠFlow < T >. safe Collect ( cross inline Ġaction : Ġsuspend Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġcollect Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Context . ensure Active () ĊĠĠĠĠĠĠĠ Ġaction ( it ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCollect Ġa Ġflow Ġon Ġa Ġspecific Ġcoroutine Ġscope . Ċ Ġ* Ċ Ġ* ĠThis Ġcan Ġbe Ġused Ġto Ġclean Ġup Ġsome Ġnesting Ġwith Ġmultiple Ġlaunched Ċ Ġ* Ġcoroutine Ġflow Ġcollections . Ċ Ġ* ĠThis Ġuses Ġ[ safe Collect ] Ġto Ġensure Ġthe Ġscope Ġis Ġactive Ġwhen Ġcollecting . Ċ Ġ* Ċ Ġ* Ġ@ return ĠThe Ġjob Ġlaunched Ġand Ġrunning Ġthe Ġcollection Ġaction . Ċ Ġ*/ Ċ fun Ġ< T > ĠFlow < T >. collect On ( scope : ĠCor outine Scope , Ġaction : Ġsuspend Ġ( T ) Ġ-> ĠUnit ): ĠJob Ġ{ ĊĠĠĠ Ġreturn Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġsafe Collect ( action ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠMap Ġeach Ġitem Ġin Ġthe Ġemitted Ġlists Ġfor Ġthe Ġflow . Ċ Ġ*/ Ċ inline Ġfun Ġ< T , ĠR > ĠFlow < Iterable < T >> . map Each ( cross inline Ġmapping : Ġsuspend Ġ( T ) Ġ-> ĠR ): ĠFlow < List < R >> Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . map Ġ{ Ġmapping ( it ) Ġ} Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠFilter Ġeach Ġlist Ġemitted Ġby Ġa Ġflow . Ċ Ġ*/ Ċ inline Ġfun Ġ< T > ĠFlow < Iterable < T >> . filter Each ( cross inline Ġpredicate : Ġsuspend Ġ( T ) Ġ-> ĠBoolean ): ĠFlow < List < T >> Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . filter Ġ{ Ġpredicate ( it ) Ġ} Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠFilter Ġeach Ġlist Ġemitted Ġby Ġa Ġflow Ġto Ġonly Ġitems Ġthat Ġare Ġan Ġinstance Ġof Ġ[ R ] Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠR > ĠFlow < Iterable <* >> . filter Each Is Instance (): ĠFlow < List < R >> Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . filter Is Instance < R >() Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠFilter Ġa Ġlist Ġof Ġnullable Ġitems Ġinto Ġa Ġnon - nullable Ġlist . Ċ Ġ* Ċ Ġ* ĠThis Ġfilters Ġout Ġ/ Ġremoves Ġany Ġnull Ġitems Ġfrom Ġeach Ġlist Ġemitted Ġby Ġthe Ġflow . Ċ Ġ*/ Ċ fun Ġ< T : ĠAny > ĠFlow < Iterable < T ? >> . filter Each NotNull (): ĠFlow < List < T >> Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . filter NotNull () Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCombine Ġtwo Ġflows Ġinto Ġa Ġflow Ġof Ġpaired Ġdata . Ċ Ġ*/ Ċ fun Ġ< A , ĠB > ĠFlow < A >. combine Pair ( other : ĠFlow < B >): ĠFlow < Pair < A , ĠB >> Ġ{ ĊĠĠĠ Ġreturn Ġcombine ( other ) Ġ{ Ġa , Ġb Ġ-> Ġa Ġto Ġb Ġ} Ċ } Ċ /** Ċ Ġ* ĠCombine Ġa Ġthird Ġflow Ġinto Ġa Ġflow Ġof Ġpaired Ġdata Ġto Ġcreate Ġa Ġtriple . Ċ Ġ*/ Ċ fun Ġ< A , ĠB , ĠC > ĠFlow < Pair < A , ĠB >> . combine Triple ( other : ĠFlow < C >): ĠFlow < Triple < A , ĠB , ĠC >> Ġ{ ĊĠĠĠ Ġreturn Ġcombine ( other ) Ġ{ Ġ( a , Ġb ), Ġc Ġ-> ĠTrip le ( a , Ġb , Ġc ) Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠCombine Ġtwo Ġflows Ġof Ġiterable Ġdata , Ġflatten ing Ġthe Ġdata Ġinto Ġa Ġsingle Ġlist . Ċ Ġ*/ Ċ fun Ġ< T > ĠFlow < Iterable < T >> . combine Flatten ( other : ĠFlow < Iterable < T >> ): ĠFlow < List < T >> Ġ{ ĊĠĠĠ Ġreturn Ġcombine ( other ) Ġ{ Ġa , Ġb Ġ-> Ġa Ġ+ Ġb Ġ} Ċ } Ċ