package Ġcom . ram cost a . compose dest inations . result Ċ Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġcom . ram cost a . compose dest inations . dynamic . Dynamic Destination Spec Ċ import Ġcom . ram cost a . compose dest inations . spec . Destination Spec Ċ Ċ /** Ċ Ġ* ĠNavigator Ġthat Ġallows Ġnavig ating Ġback Ġwhile Ġpassing Ċ Ġ* Ġa Ġresult Ġof Ġtype Ġ[ R ]. Ċ Ġ* Ċ Ġ* ĠIf Ġdeclared Ġas Ġa Ġparameter Ġof Ġa Ġ`@ Destination ` Ġannotated ĠComp osable , Ċ Ġ* ĠCompose ĠDest inations Ġwill Ġprovide Ġa Ġcorrect Ġimplementation . ĠIf Ġyou 're Ċ Ġ* Ġmanually Ġcalling Ġthat ĠComp osable , Ġthen Ġyou Ġcan Ġuse Ċ Ġ* Ġ[ com . ram cost a . compose dest inations . manual comp osable calls . result Back Navigator ] Ċ Ġ* Ġextension Ġfunction Ġto Ġget Ġa Ġcorrectly Ġtyped Ġimplementation . Ċ Ġ* Ċ Ġ* ĠType Ġsafety Ġrelated Ġlimitations Ġ( compile Ġtime Ġen forced ): Ċ Ġ* Ġ- Ġ[ R ] Ġmust Ġbe Ġone Ġof ĠString , ĠBoolean , ĠFloat , ĠInt , ĠLong , ĠSerializable , Ġor ĠParcel able . Ċ Ġ* ĠThey Ġcan Ġbe Ġnullable . Ċ Ġ* Ġ- Ġ[ R ] Ġtype Ġcannot Ġhave Ġtype Ġarguments Ġitself Ġ( f . e Ġyou Ġcan 't Ġuse ĠArray < String > Ġeven Ġthough Ġit Ġis ĠSerializable ) Ċ Ġ* Ġ- ĠEach Ġannotated ĠComp osable Ġcan Ġhave Ġat Ġmost Ġone Ġparameter Ġof Ġtype Ġ[ Result Back Navigator ] Ċ Ġ* Ċ Ġ* Ġ@ see Ġ[ com . ram cost a . compose dest inations . result . Result Recipient ] Ċ Ġ*/ Ċ interface ĠResult Back Navigator < R > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGo es Ġback Ġto Ġprevious Ġdestination Ġsending Ġ[ result ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġuses Ġ[ Nav Controller . navigate Up ] Ġinternally Ġto Ġgo Ġback . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠCheck Ġ[ com . ram cost a . compose dest inations . result . Result Recipient ] Ġto Ġsee ĊĠĠĠĠ Ġ* Ġhow Ġto Ġget Ġthe Ġresult . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnavigate Back ( result : ĠR ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġa Ġ[ result ] Ġto Ġbe Ġsent Ġon Ġthe Ġnext Ġ[ navigate Back ] Ġcall . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠCheck Ġ[ com . ram cost a . compose dest inations . result . Result Recipient ] Ġto Ġsee ĊĠĠĠĠ Ġ* Ġhow Ġto Ġget Ġthe Ġresult . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġmultiple Ġcalls Ġare Ġdone , Ġthe Ġlast Ġone Ġwill Ġbe Ġthe Ġresult Ġsent Ġback . ĊĠĠĠĠ Ġ* ĠThis Ġalso Ġapplies Ġif Ġyou Ġcall Ġ[ navigate Back ] Ġ( with Ġresult ) Ġafter Ġcalling Ġthis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Result ( result : ĠR ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGo es Ġback Ġto Ġprevious Ġdestination Ġsending Ġthe Ġlast Ġresult Ġset Ġwith Ġ[ set Result ] ĊĠĠĠĠ Ġ* Ġor Ġjust Ġnavig ating Ġif Ġno Ġresult Ġwas Ġset .. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġuses Ġ[ Nav Controller . navigate Up ] Ġinternally Ġto Ġgo Ġback . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnavigate Back () Ċ } Ċ