package Ġcom . pal ig ot . movies . android Ċ Ċ import Ġandroidx . compose . foundation . layout . fill MaxSize Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Surface Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . La unched Effect Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ import Ġandroidx . navigation . Nav Type Ċ import Ġandroidx . navigation . compose .* Ċ import Ġcom . pal ig ot . movies . data . models . Movie Section Ċ import Ġcom . pal ig ot . movies . the ming . Ex plor ing Movies Theme Ċ import Ġcom . pal ig ot . movies . android . screens . Movie Details ViewModel Ċ import Ġcom . pal ig ot . movies . android . screens . Movie Home ViewModel Ċ import Ġcom . pal ig ot . movies . android . screens . Movie List ViewModel Ċ Ċ @ Composable Ċ fun ĠApp ( ĊĠ Ġhome Screen Opened : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠ Ġmovie Detail Screen Opened : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠ Ġmovie List Screen Opened : Ġ() Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ{ ĊĠ Ġval Ġnav Controller Ġ= Ġremember Nav Controller () ĊĠ ĠLa unched Effect ( Unit ) Ġ{ ĊĠĠĠ Ġnav Controller . add On Destination Changed Listener Ġ{ Ġ_, Ġdest , Ġ_ Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ( dest . route ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" movies " Ġ-> Ġhome Screen Opened () ĊĠĠĠĠĠĠĠ Ġ" movies /{ movie Id }" Ġ-> Ġmovie Detail Screen Opened () ĊĠĠĠĠĠĠĠ Ġ" sections /{ section Id }" Ġ-> Ġmovie List Screen Opened () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠTODO () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ ĠSurface ( color Ġ= ĠMaterial Theme . colors . background , Ġmodifier Ġ= ĠModifier . fill MaxSize ()) Ġ{ ĊĠĠĠ ĠNav Host ( nav Controller , Ġstart Destination Ġ= Ġ" movies ") Ġ{ ĊĠĠĠĠĠ Ġcomp osable (" movies ") Ġ{ ĊĠĠĠĠĠĠĠ ĠMovie Home ViewModel ( ĊĠĠĠĠĠĠĠĠĠ Ġon View All Click Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate (" sections /$ it ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġnav Controller . navigate (" movies /${ it . id }") Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠ Ġroute Ġ= Ġ" sections /{ section Id }", ĊĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( nav Argument (" section Id ") Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNav Type . Enum Type ( Movie Section :: class . java ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMovie List ViewModel ( ĊĠĠĠĠĠĠĠĠĠ Ġmovie Section Ġ= Ġit . arguments ?. get (" section Id ") !! Ġas ĠMovie Section ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate (" movies /${ it . id }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠ Ġroute Ġ= Ġ" movies /{ movie Id }", ĊĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( nav Argument (" movie Id ") Ġ{ Ġtype Ġ= ĠNav Type . Int Type Ġ}) ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMovie Details ViewModel ( movie Id Ġ= Ġit . arguments ?. getInt (" movie Id ") !! ) Ġ{ Ġmovie Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate (" movies /${ movie . id }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Preview ( show Background Ġ= Ġtrue ) Ċ @ Composable Ċ fun ĠDefault Preview () Ġ{ ĊĠ ĠEx plor ing Movies Theme Ġ{ ĊĠĠĠ ĠApp () ĊĠ Ġ} Ċ }