package Ġcom . push pal . jet lime . ui . time lines . update state Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . push pal . jet lime . ui . time lines . update state . data . Item Ċ import Ġcom . push pal . jet lime . ui . time lines . update state . data . get Fake Items Ċ import Ġcom . push pal . jet lime . ui . time lines . update state . data . modify Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠItem UpdateTime Line ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠ Ġvar Ġitems List State Ġ= ĠMutable State Flow < Items List State >( Items List State . Empty ) ĊĠĠĠ Ġprivate Ġset ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġfetch Items () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġfetch Items () Ġ{ ĊĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠ Ġitems List State . value Ġ= ĠItems List State . Loading ĊĠĠĠĠĠ Ġitems List State . value Ġ= ĠItems List State . Success ( items List Ġ= Ġget Fake Items ()) ĊĊĠĠĠĠĠ Ġ// ĠModify Ġitems Ġlist Ġafter Ġ 2 Ġseconds Ġdelay ĊĠĠĠĠĠ Ġdelay ( 2 0 0 0 ) ĊĠĠĠĠĠ Ġitems List State . value Ġ= ĠItems List State . Success ( items List Ġ= Ġget Fake Items (). modify ( 2 )) ĊĊĠĠĠĠĠ Ġ// ĠModify Ġitems Ġlist Ġafter Ġ 3 Ġseconds Ġdelay ĊĠĠĠĠĠ Ġdelay ( 3 0 0 0 ) ĊĠĠĠĠĠ Ġitems List State . value Ġ= ĠItems List State . Success ( items List Ġ= Ġget Fake Items (). modify ( 3 )) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ sealed Ġclass ĠItems List State Ġ{ ĊĠ Ġobject ĠEmpty Ġ: ĠItems List State () ĊĠ Ġobject ĠLoading Ġ: ĠItems List State () ĊĠ Ġdata Ġclass ĠSuccess ( val Ġitems List : ĠList < Item >) Ġ: ĠItems List State () Ċ }