package Ġio . github . ch 8 n . wh atis . ui . navigation Ċ Ċ import Ġandroidx . compose . material . Experimental Material Api Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . navigation . Nav Type Ċ import Ġandroidx . navigation . compose . Nav Host Ċ import Ġandroidx . navigation . compose . comp osable Ċ import Ġandroidx . navigation . compose . nav Argument Ċ import Ġandroidx . navigation . compose . remember Nav Controller Ċ import Ġio . github . ch 8 n . wh atis . ui . screens . home . Home Screen Ċ import Ġio . github . ch 8 n . wh atis . ui . screens . name Re veal . Name Re veal Screen Ċ import Ġio . github . ch 8 n . wh atis . ui . screens . name form . Name Form Screen Ċ import Ġio . github . ch 8 n . wh atis . ui . screens . stories . St ories Screen ĊĊ Ċ sealed Ġclass ĠScreen ( val Ġroute : ĠString ) Ġ{ ĊĠĠĠ Ġobject ĠHome Ġ: ĠScreen (" Home ") ĊĠĠĠ Ġobject ĠName Form Ġ: ĠScreen (" Name Form ") ĊĠĠĠ Ġobject ĠName Re veal Ġ: ĠScreen (" Name Re veal ") ĊĠĠĠ Ġobject ĠSt ories Ġ: ĠScreen (" St ories ") ĊĊĠĠĠ Ġfun Ġwith Args ( var arg Ġattributes : ĠPair < String , ĠString >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroute . plus ( attributes . join ToString ( separator Ġ= Ġ"") Ġ{ Ġ(_, Ġvalues ) Ġ-> Ġ"/ $ values " Ġ}) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Experimental Material Api Ċ @ Composable Ċ fun ĠWhat is Navigation () Ġ{ ĊĠĠĠ Ġval Ġnav Controller Ġ= Ġremember Nav Controller () ĊĠĠĠ ĠNav Host ( ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , ĊĠĠĠĠĠĠĠ Ġstart Destination Ġ= ĠScreen . Home . route ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomp osable ( Screen . Home . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHome Screen ( nav Controller Ġ= Ġnav Controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcomp osable ( Screen . Name Form . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠName Form Screen ( nav Controller Ġ= Ġnav Controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScreen . Name Re veal . route ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ("/ { firstName }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus ("/ { lastName } "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Argument (" firstName ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNav Type . StringType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnullable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Argument (" lastName ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠNav Type . StringType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnullable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġ_ entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠName Re veal Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġrequire NotNull (_ entry . arguments ?. getString (" firstName ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġrequire NotNull (_ entry . arguments ?. getString (" lastName ")), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcomp osable ( Screen . St ories . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSt ories Screen ( nav Controller Ġ= Ġnav Controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ