package Ġapp . alle ver . android . lib . mv vm . base Ċ Ċ import Ġandroidx . activity . Component Activity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Lazy Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* Ġ è¿Ļæł· åĨĻ ä¹Ł ä¼ļ å¼Ĥå¸¸ Ċ Ġ* Ċ Ġ*/ Ċ public Ġinline Ġfun Ġ< VM Ġ: ĠViewModel > ĠComponent Activity . viewModel ( ĊĠĠĠ Ġcl z : ĠK Class < VM >, ĊĠĠĠ Ġno inline Ġfactory Producer : Ġ(() Ġ-> ĠViewModel Provider . Factory )? Ġ= Ġnull Ċ ): ĠLazy < VM > Ġ{ ĊĠĠĠ Ġval Ġfactory Promise Ġ= Ġfactory Producer Ġ?: Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault ViewModel Provider Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠViewModel Lazy ( cl z , Ġ{ ĠviewModel Store Ġ}, Ġfactory Promise ) Ċ } Ċ Ċ /*** Ċ Ġ* Ġ è¿Ļæł· åĨĻ ä¹Ł ä¼ļ å¼Ĥå¸¸ Ċ Ġ* Ġif Ġ( m FragmentManager Ġ== Ġnull ) Ġ{ Ċ Ġ* ĠĠĠĠĠ Ġthrow Ġnew ĠIllegalStateException (" Can 't Ġaccess ĠView Models Ġfrom Ġdet ached Ġfragment "); Ċ Ġ* Ġ} Ċ Ġ*/ Ċ public Ġinline Ġfun Ġ< VM Ġ: ĠViewModel > ĠFragment . viewModel ( ĊĠĠĠ Ġcl z : ĠK Class < VM >, ĊĠĠĠ Ġno inline Ġfactory Producer : Ġ(() Ġ-> ĠViewModel Provider . Factory )? Ġ= Ġnull Ċ ): ĠLazy < VM > Ġ{ ĊĠĠĠ Ġval Ġfactory Promise Ġ= Ġfactory Producer Ġ?: Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault ViewModel Provider Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠViewModel Lazy ( cl z , Ġ{ ĠviewModel Store Ġ}, Ġfactory Promise ) Ċ }