package Ġcom . example . device population . ui . navigation Ċ Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . lifecycle . view model . compose . viewModel Ċ import Ġandroidx . navigation . Nav Host Controller Ċ import Ġandroidx . navigation . Nav Type . Companion . Long Type Ċ import Ġandroidx . navigation . compose . Nav Host Ċ import Ġandroidx . navigation . compose . comp osable Ċ import Ġandroidx . navigation . compose . remember Nav Controller Ċ import Ġandroidx . navigation . nav Argument Ċ import Ġcom . example . device population . ui . device details . Device Details Screen Ċ import Ġcom . example . device population . ui . device details . Device Details ViewModel Ċ import Ġcom . example . device population . ui . devices . Device ListView Ċ import Ġcom . example . device population . ui . devices . Device List ViewModel Ċ import Ġcom . example . device population . ui . navigation . App Scre ens . Details Ċ import Ġcom . example . device population . ui . navigation . App Scre ens . Device List Ċ Ċ private Ġconst Ġval ĠDEVICE _ ID _ KEY Ġ= Ġ" deviceId " Ċ Ċ @ Composable Ċ fun ĠDevice Population Nav Host ( ĊĠĠĠ Ġnav Controller : ĠNav Host Controller Ġ= Ġremember Nav Controller (), ĊĠĠĠ Ġdevice List ViewModel : ĠDevice List ViewModel , ĊĠĠĠ Ġdevice Details ViewModel : ĠDevice Details ViewModel , ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier Ċ ) Ġ{ ĊĠĠĠ ĠNav Host ( ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , ĊĠĠĠĠĠĠĠ Ġstart Destination Ġ= ĠDevice List . name , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomp osable ( route Ġ= ĠDevice List . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDevice ListView ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġdevice List ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Device Click Ġ= Ġ{ Ġdevice : ĠLong Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Device Details ( nav Controller Ġ= Ġnav Controller , ĠdeviceId Ġ= Ġdevice ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroute Ġ= Ġ"${ Details . name }/ {" Ġ+ ĠDEVICE _ ID _ KEY Ġ+ Ġ" }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Argument ( DEVICE _ ID _ KEY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠLong Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġback Stack Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDevice Details Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġdevice Details ViewModel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdeviceId Ġ= Ġback Stack Entry . arguments ?. getLong ( DEVICE _ ID _ KEY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup Press Ġ= Ġ{ Ġnav Controller . pop Back Stack () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġnavigate To Device Details ( nav Controller : ĠNav Host Controller , ĠdeviceId : ĠLong ) Ġ{ ĊĠĠĠ Ġnav Controller . navigate ("${ Details . name }/ $ deviceId ") Ċ } Ċ