package Ġcom . kp stv . navigation . compose . sample . ui . screens Ċ Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . material . Button Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Immutable Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . kp stv . navigation . compose .* Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ Ċ sealed Ġclass ĠMenu Setting Route Ġ: ĠRoute Ġ{ ĊĠĠĠ Ġ@ Parcel ize Ġ@ Immutable ĊĠĠĠ Ġdata Ġclass ĠFirst ( private Ġval Ġno Arg : ĠString Ġ= Ġ"") Ġ: ĠMenu Setting Route () ĊĠĠĠ Ġ@ Parcel ize Ġ@ Immutable ĊĠĠĠ Ġdata Ġclass ĠSecond ( private Ġval Ġno Arg : ĠString Ġ= Ġ"") Ġ: ĠMenu Setting Route () ĊĠĠĠ Ġcompanion Ġobject ĠKey Ġ: ĠRoute . Key < Menu Setting Route > Ċ // ĠĠĠ Ġcompanion Ġobject Ġ{ Ġval Ġkey Ġ= ĠMenu Setting Route :: class Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠMenu Setting Screen () Ġ{ ĊĠĠĠ Ġval Ġnavigator Ġ= Ġfind Compose Navigator () ĊĠĠĠ Ġval Ġsetting Controller Ġ= Ġremember Nav Controller < Menu Setting Route >() ĊĠĠĠ Ġnavigator . Setup ( key Ġ= ĠMenu Setting Route . key , Ġcontroller Ġ= Ġsetting Controller , Ġinitial Ġ= ĠMenu Setting Route . First ()) Ġ{ Ġdest Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen ( dest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMenu Setting Route . First Ġ-> ĠMenu Setting First Screen () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMenu Setting Route . Second Ġ-> ĠMenu Setting Second Screen () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Un stable Navigator Api :: class ) Ċ @ Composable Ċ private Ġfun ĠMenu Setting First Screen () Ġ{ ĊĠĠĠ Ġval Ġnavigator Ġ= Ġfind Compose Navigator () ĊĠĠĠ Ġval Ġsetting Controller Ġ= Ġfind Nav Controller ( key Ġ= ĠMenu Setting Route . key ) ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Color . Black ), ĊĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ Ġsetting Controller . navigate To ( Menu Setting Route . Second ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Animation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= ĠF ade ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= ĠF ade ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Go Ġto ĠSettings : Second ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 1 0 . dp )) ĊĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ Ġnavigator . go Back Until ( Main Route . Second :: class , Ġinclusive Ġ= Ġtrue ) Ġ}) Ġ{ Ġ// Ġequivalent Ġto Ġ" navigator . go Back Until ( MenuItem . Home :: class , Ġinclusive Ġ= Ġfalse )" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Go Ġto ĠStart Route : Second Ġnavigation ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Opt In ( Un stable Navigator Api :: class ) Ċ @ Composable Ċ private Ġfun ĠMenu Setting Second Screen () Ġ{ ĊĠĠĠ Ġval Ġnavigator Ġ= Ġfind Compose Navigator () ĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Color . Dark Gray ), ĊĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠButton ( onClick Ġ= Ġ{ Ġnavigator . go Back To Root () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġ" Go Ġto ĠRoot ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }