package Ġdev . p iment el . ch uck nor ris . shared . extensions Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Default Lifecycle Observer Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġkotlinx . coroutines . flow . State Flow Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ fun Ġ< T > ĠFragment . lifecycle Binding ( binding Factory : Ġ( View ) Ġ-> ĠT ): ĠReadOnly Property < Fragment , ĠT > Ġ= ĊĠĠĠ Ġobject Ġ: ĠReadOnly Property < Fragment , ĠT >, ĠDefault Lifecycle Observer Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġbinding : ĠT ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ lifecycle Binding ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. view Lifecycle Owner LiveData ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this @ lifecycle Binding ) Ġ{ Ġowner Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner ?. lifecycle ?. add Observer ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Destroy ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠFragment , Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbinding Ġ?: Ġbinding Factory ( require View ()). also Ġ{ Ġnew Binding Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= Ġnew Binding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ inline Ġfun Ġ< T > ĠFragment . watch ( source : ĠState Flow < T >, Ġcross inline Ġblock : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġlifecycle Scope . launch When Created Ġ{ Ġsource . collect Ġ{ Ġblock ( it ) Ġ} Ġ} Ċ } Ċ