package Ġcom . example . basic app . view model Ċ Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . example . basic app . data . Banner Ċ import Ġcom . example . basic app . data . Home Repository Ċ import Ġcom . example . basic app . data . Plant Ċ import Ġkotlinx . coroutines . launch Ċ Ċ // åıĤèĢĥ Ġhttps :// www . jian shu . com / p / 6 da 8 0 0 dd aa 2 e Ċ class ĠHome ViewModel Ġ( private Ġval Ġhome Repository : ĠHome Repository ): ĠViewModel (){ ĊĠĠĠ Ġprivate Ġval Ġ_ response Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġprivate Ġval Ġ_ b anners Ġ= ĠMutable LiveData < List < Banner >>() ĊĊĠĠĠ Ġval Ġresponse : ĠLive Data < String > Ġ= Ġ_ response ĊĠĠĠ Ġval Ġb anners : ĠLive Data < List < Banner >> Ġ= Ġ_ b anners ĊĊĠĠĠ Ġprivate Ġval Ġ_ error Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġerror : LiveData < String > Ġ= Ġ_ error ĊĊĠĠĠ Ġval Ġg arden Plant ings : ĠLive Data < List < Plant >> Ġ= Ġhome Repository . get G arden Pl ants () ĊĊĠĠĠ Ġvar Ġplant Name : ĠLive Data < String ?> Ġ= Ġg arden Plant ings . map { ĊĠĠĠĠĠĠĠ Ġif ( it . isNotEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . take Last ( 1 )[ 0 ]. plant Name ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Home View Clicked (){ ĊĠĠĠĠĠĠĠ Ġrefresh View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Banner () Ġ= Ġlaunch Data Load Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġhome Repository . get Banner () ĊĠĠĠĠĠĠĠ Ġ_ b anners . post Value ( result . data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh View (): ĠUnit Ġ= Ġlaunch Data Load { ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠString Ġ= Ġhome Repository . refresh View () ĊĠĠĠĠĠĠĠ Ġ_ response . value Ġ= Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlaunch Data Load ( function : Ġsuspend Ġ() Ġ-> ĠUnit ): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( err : Home Repository . Refresh Error ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ error . value Ġ= Ġerr . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }