package Ġcom . example . m vi _ flow _ example . one Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . example . m vi _ flow _ example . databinding . Activity Main Binding Ċ import Ġcom . example . m vi _ flow _ example . m vi . M vi View Ċ import Ġcom . example . m vi _ flow _ example . one . One Contract . Button Click Intent Ċ import Ġcom . example . m vi _ flow _ example . one . One Contract . One State Ċ import Ġcom . example . m vi _ flow _ example . one . One Contract . Toast Action Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . Flow Preview Ċ import Ġkotlinx . coroutines . channels . await Close Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . callback Flow Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . merge Ċ Ċ @ Flow Preview Ċ @ Experimental Cor outines Api Ċ class ĠOne Activity Ġ: ĠAppCompatActivity (), ĠM vi View < One State > Ġ{ ĊĠĠĠ Ġoverride Ġval ĠviewModel Ġby Ġlazy Ġ{ ĠViewModel Provider ( this ). get ( One ViewModel :: class . java ) Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Main Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġintent s (): ĠFlow < Any > Ġ= Ġmerge ( binding . btn Start . click s (). map Ġ{ ĠButton Click Intent Ġ}) ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( state : ĠOne State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . btn Start . text Ġ= Ġstate . text ĊĠĠĠ Ġ} ĊĠĠĠĠĊĊĠĠĠ Ġoverride Ġfun Ġactions ( action : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠToast Action Ġ-> ĠToast . makeText ( this , Ġaction . text , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġfun ĠView . click s (): ĠFlow < View > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcallback Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ Ġoffer ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġawait Close Ġ{ Ġset OnClickListener ( null ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ