package Ġcom . m und ocr ativo . jav ier . flow . ui . main Ċ Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . m und ocr ativo . jav ier . flow . R Ċ import Ġcom . m und ocr ativo . jav ier . flow . Util . Callback Based Api Ċ import Ġcom . m und ocr ativo . jav ier . flow . Util . flow From Ċ import Ġkotlinx . android . synt hetic . main . main _ fragment .* Ċ import Ġkotlinx . android . synt hetic . main . main _ fragment . view .* Ċ import Ġkotlinx . android . synt hetic . main . main _ fragment . view . textView Ċ import Ġkotlinx . coroutines . Cancellation Exception Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . cancel Ċ import Ġkotlinx . coroutines . channels . await Close Ċ import Ġkotlinx . coroutines . channels . send Blocking Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠMain Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfl u jo Base : ĠFlow < Int > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfl u jo Async Ġ: ĠFlow < Int > ĊĠĠĠ Ġprivate Ġvar Ġcont Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmy Api : ĠCallback Based Api ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠMain Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMain ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . main _ fragment , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġview . tick Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Api . gener a () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this ). get ( Main ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠUse Ġthe ĠViewModel ĊĊĠĠĠĠĠĠĠ ĠviewModel . texto . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġprograma Fl u jo () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġprograma Fl u jo () Ġ= ĠGlobal Scope . launch { ĊĊĠĠĠĠĠĠĠ Ġmy Api Ġ= ĠCallback Based Api ( 5 ) ĊĠĠĠĠĠĠĠ Ġfl u jo Async Ġ= Ġflow From ( my Api ) ĊĊĠĠĠĠĠĠĠ Ġfl u jo Base Ġ= Ġ( 0 .. 1 0 ). as Flow () ĊĊĊĠĠĠĠĠĠĠ Ġfl u jo Base . zip ( flu jo Async ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa , b Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ a Ġ-> Ġ$ b " ĊĠĠĠĠĠĠĠ Ġ}. collect { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" msg "," $ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . texto . post Value ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfl u jo Base . collect { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" msg "," $ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . texto . post Value ( it . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĊĊ Ċ } Ċ