package Ġcom . th om ask io ko . tv man iac . home Ċ Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . compose . foundation . layout . Row Scope Ċ import Ġandroidx . compose . material . Bottom Navigation Ċ import Ġandroidx . compose . material . Bottom Navigation Item Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Sca ffold Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Disposable Effect Ċ import Ġandroidx . compose . runtime . Stable Ċ import Ġandroidx . compose . runtime . State Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . res . p ainter Resource Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Nav Destination . Companion . hierarchy Ċ import Ġandroidx . navigation . Nav Graph . Companion . find Start Destination Ċ import Ġandroidx . navigation . Nav Host Controller Ċ import Ġandroidx . navigation . compose . Nav Host Ċ import Ġandroidx . navigation . compose . current Back Stack Entry As State Ċ import Ġandroidx . navigation . compose . remember Nav Controller Ċ import Ġcom . google . ac comp an ist . in sets . navigation Bars Padding Ċ import Ġcom . th om ask io ko . tv man iac . navigation . Compose Navigation Factory Ċ import Ġcom . th om ask io ko . tv man iac . navigation . Navigation Screen Ċ import Ġcom . th om ask io ko . tv man iac . navigation . add Navigation Ċ import Ġcom . th om ask io ko . tv man iac . resources . R Ċ Ċ @ Composable Ċ fun ĠHome Screen ( ĊĠĠĠ Ġcompose Navigation Factories : ĠSet < Compose Navigation Factory > Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġnav Controller Ġ= Ġremember Nav Controller () ĊĠĠĠ Ġval Ġroute Ġ= Ġcurrent Route ( nav Controller ) ĊĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. navigation Bars Padding (), ĊĠĠĠĠĠĠĠ Ġbottom Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent SelectedItem Ġby Ġnav Controller . current Screen As State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! route . contains ( Navigation Screen . Show Details Nav Screen . route ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! route . contains ( Navigation Screen . Show Grid Nav Screen . route ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT v Man iac Bottom Navigation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Navigation Selected Ġ= Ġ{ Ġselected Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( selected . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Single Top Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestore State Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Up To ( nav Controller . graph . find Start Destination (). id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent SelectedItem Ġ= Ġcurrent SelectedItem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNav Host ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Destination Ġ= ĠNavigation Screen . Discover Nav Screen . route ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompose Navigation Factories . add Navigation ( this , Ġnav Controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠT v Man iac Bottom Navigation ( ĊĠĠĠ Ġon Navigation Selected : Ġ( Navigation Screen ) Ġ-> ĠUnit , ĊĠĠĠ Ġcurrent SelectedItem : ĠNavigation Screen Ċ ) Ġ{ ĊĠĠĠ ĠBottom Navigation ( ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠMaterial Theme . colors . primary ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ ĠT v Man iac Bottom Navigation Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Ġ= ĠNavigation Screen . Discover Nav Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ baseline _ discover _ 2 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġstring Resource ( id Ġ= ĠR . string . menu _ item _ discover ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġcurrent SelectedItem Ġ== ĠNavigation Screen . Discover Nav Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Navigation Selected Ġ= Ġon Navigation Selected ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠT v Man iac Bottom Navigation Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Ġ= ĠNavigation Screen . Search Nav Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ baseline _ search _ 2 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġstring Resource ( id Ġ= ĠR . string . menu _ item _ search ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġcurrent SelectedItem Ġ== ĠNavigation Screen . Search Nav Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Navigation Selected Ġ= Ġon Navigation Selected ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠT v Man iac Bottom Navigation Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Ġ= ĠNavigation Screen . Watch list Nav Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ baseline _ watch list _ 2 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġstring Resource ( id Ġ= ĠR . string . menu _ item _ watch list ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġcurrent SelectedItem Ġ== ĠNavigation Screen . Watch list Nav Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Navigation Selected Ġ= Ġon Navigation Selected ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠT v Man iac Bottom Navigation Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen Ġ= ĠNavigation Screen . Settings Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= ĠR . drawable . ic _ baseline _ more _ vert _ 2 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġstring Resource ( id Ġ= ĠR . string . menu _ item _ more ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġcurrent SelectedItem Ġ== ĠNavigation Screen . Settings Screen , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Navigation Selected Ġ= Ġon Navigation Selected ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠRow Scope . Tv Man iac Bottom Navigation Item ( ĊĠĠĠ Ġscreen : ĠNavigation Screen , ĊĠĠĠ Ġ@ Drawable Res Ġicon : ĠInt , ĊĠĠĠ Ġtitle : ĠString , ĊĠĠĠ Ġselected : ĠBoolean , ĊĠĠĠ Ġon Navigation Selected : Ġ( Navigation Screen ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠBottom Navigation Item ( ĊĠĠĠĠĠĠĠ Ġicon Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpainter Ġ= Ġpainter Resource ( id Ġ= Ġicon ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĠText ( title ) Ġ}, ĊĠĠĠĠĠĠĠ Ġselected Ġ= Ġselected , ĊĠĠĠĠĠĠĠ Ġalways Show Label Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġselected Content Color Ġ= ĠMaterial Theme . colors . secondary , ĊĠĠĠĠĠĠĠ Ġun selected Content Color Ġ= ĠMaterial Theme . colors . on Surface , ĊĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Navigation Selected ( screen ) Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun Ġcurrent Route ( nav Controller : ĠNav Host Controller ): ĠString Ġ{ ĊĠĠĠ Ġval Ġnav Back Stack Entry Ġby Ġnav Controller . current Back Stack Entry As State () ĊĠĠĠ Ġreturn Ġnav Back Stack Entry ?. destination ?. route Ġ?: ĠNavigation Screen . Discover Nav Screen . route Ċ } Ċ Ċ /** Ċ Ġ* ĠAdds Ġan Ġ[ Nav Controller . On Destination Changed Listener ] Ġto Ġthis Ġ[ Nav Controller ] Ġand Ġupdates Ġthe Ċ Ġ* Ġreturned Ġ[ State ] Ġwhich Ġis Ġupdated Ġas Ġthe Ġdestination Ġchanges . Ċ Ġ*/ Ċ @ Stable Ċ @ Composable Ċ private Ġfun ĠNav Controller . current Screen As State (): ĠState < Navigation Screen > Ġ{ ĊĠĠĠ Ġval Ġselected Item Ġ= ĊĠĠĠĠĠĠĠ Ġremember Ġ{ Ġmutable State Of < Navigation Screen >( Navigation Screen . Discover Nav Screen ) Ġ} ĊĊĠĠĠ ĠDis posable Effect ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠNav Controller . On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . hierarchy . any Ġ{ Ġit . route Ġ== ĠNavigation Screen . Discover Nav Screen . route Ġ} Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Item . value Ġ= ĠNavigation Screen . Discover Nav Screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . hierarchy . any Ġ{ Ġit . route Ġ== ĠNavigation Screen . Search Nav Screen . route Ġ} Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Item . value Ġ= ĠNavigation Screen . Search Nav Screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . hierarchy . any Ġ{ Ġit . route Ġ== ĠNavigation Screen . Watch list Nav Screen . route Ġ} Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Item . value Ġ= ĠNavigation Screen . Watch list Nav Screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination . hierarchy . any Ġ{ Ġit . route Ġ== ĠNavigation Screen . Settings Screen . route Ġ} Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Item . value Ġ= ĠNavigation Screen . Settings Screen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd On Destination Changed Listener ( listener ) ĊĊĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove On Destination Changed Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġselected Item Ċ } Ċ