package Ġco . touch lab . k amp kit . android . ui Ċ Ċ import Ġandroidx . compose . material . Bottom Navigation Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Nav Destination . Companion . hierarchy Ċ import Ġandroidx . navigation . Nav Graph . Companion . find Start Destination Ċ import Ġandroidx . navigation . compose . current Back Stack Entry As State Ċ import Ġandroidx . compose . material . Bottom Navigation Item Ċ import Ġandroidx . compose . material . Icon Ċ import Ġandroidx . compose . material . icons . filled . List Ċ import Ġandroidx . compose . material . icons . filled . Star Ċ import Ġandroidx . compose . ui . graphics . vector . Image Vector Ċ import Ġjava . util . Locale Ċ Ċ sealed Ġclass ĠScreen ( val Ġroute : ĠString , Ġval Ġicon : ĠImage Vector ) Ġ{ ĊĠĠĠ Ġobject ĠList Ġ: ĠScreen (" list ", ĠIcons . Default . List ) ĊĠĠĠ Ġobject ĠCount Ġ: ĠScreen (" count ", ĠIcons . Default . Star ) Ċ } Ċ Ċ @ Composable Ċ fun ĠBottom Bar ( nav Controller : ĠNav Controller ) Ġ{ ĊĠĠĠ ĠBottom Navigation Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnav Back Stack Entry Ġby Ġnav Controller . current Back Stack Entry As State () ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Destination Ġ= Ġnav Back Stack Entry ?. destination ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Screen . List , ĠScreen . Count ) ĊĠĠĠĠĠĠĠ Ġitems . forEach Ġ{ Ġscreen Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBottom Navigation Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġ{ ĠIcon ( image Vector Ġ= Ġscreen . icon , Ġcontent Description Ġ= Ġnull ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ{ ĠText ( screen . route . uppercase ( Locale . ROOT )) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġcurrent Destination ?. hierarchy ?. any Ġ{ Ġit . route Ġ== Ġscreen . route Ġ} Ġ== Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( screen . route ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpop Up To ( nav Controller . graph . find Start Destination (). id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Single Top Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestore State Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ