package Ġcom . ste le ot . jet pack compose . playground . compose . cust ome x ample s Ċ Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout . Box Ċ import Ġandroidx . compose . foundation . layout . Column Ċ import Ġandroidx . compose . foundation . layout . fill Max Width Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . foundation . layout . padding Ċ import Ġandroidx . compose . foundation . remember Scroll State Ċ import Ġandroidx . compose . foundation . vertical Scroll Ċ import Ġandroidx . compose . material . Text Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . layout . Layout Ċ import Ġandroidx . compose . ui . text . TextStyle Ċ import Ġandroidx . compose . ui . text . style . Text Align Ċ import Ġandroidx . compose . ui . unit . Dp Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġcom . ste le ot . jet pack compose . playground . compose . reusable . Default Sca ffold Ċ import Ġcom . ste le ot . jet pack compose . playground . navigation . Custom Examples Nav Routes Ċ import Ġcom . ste le ot . jet pack compose . playground . theme . colors Ċ import Ġcom . ste le ot . jet pack compose . playground . utils . capitalize First Letter Ċ import Ġkotlin . math . ceil Ċ Ċ private Ġconst Ġval ĠUrl Ġ= Ġ" cust ome x ample s / St agger ed Grid List Screen . kt " Ċ Ċ @ Composable Ċ fun ĠSt agger ed Grid List Screen () Ġ{ ĊĠĠĠ ĠDefault Sca ffold ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= ĠCustom Examples Nav Routes . St agger ed Grid List , ĊĠĠĠĠĠĠĠ Ġlink Ġ= ĠUrl , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSt agger ed Vertical Grid ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Column Width Ġ= Ġ 2 2 0 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroutes List . forEach Indexed Ġ{ Ġindex , Ġroute Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSt agger ed Card ( index , Ġroute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠSt agger ed Vertical Grid ( ĊĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠ Ġmax Column Width : ĠD p , ĊĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ ĠLayout ( ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent , ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier ĊĠĠĠ Ġ) Ġ{ Ġmeas ur ables , Ġconstraints Ġ-> ĊĠĠĠĠĠĠĠ Ġcheck ( constraints . has Bounded Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Un bounded Ġwidth Ġnot Ġsupported " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġceil ( constraints . maxWidth Ġ/ Ġmax Column Width . to Px ()). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġcolumn Width Ġ= Ġconstraints . maxWidth Ġ/ Ġcolumns ĊĠĠĠĠĠĠĠ Ġval Ġitem Constraints Ġ= Ġconstraints . copy ( maxWidth Ġ= Ġcolumn Width ) ĊĠĠĠĠĠĠĠ Ġval Ġcol Height s Ġ= ĠInt Array ( columns ) Ġ{ Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġplace ables Ġ= Ġmeas ur ables . map Ġ{ Ġmeas ur able Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= Ġshortest Column ( col Height s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace able Ġ= Ġmeas ur able . measure ( item Constraints ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcol Height s [ column ] Ġ+= Ġplace able . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace able ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġcol Height s . max OrNull ()?. coerce In ( constraints . min Height , Ġconstraints . max Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġconstraints . min Height ĊĠĠĠĠĠĠĠ Ġlayout ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġconstraints . maxWidth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġheight ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcol Y Ġ= ĠInt Array ( columns ) Ġ{ Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplace ables . forEach Ġ{ Ġplace able Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumn Ġ= Ġshortest Column ( col Y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace able . place ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġcolumn Width Ġ* Ġcolumn , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġcol Y [ column ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcol Y [ column ] Ġ+= Ġplace able . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġshortest Column ( col Height s : ĠInt Array ): ĠInt Ġ{ ĊĠĠĠ Ġvar ĠminHeight Ġ= ĠInt . MAX _ VALUE ĊĠĠĠ Ġvar Ġcolumn Ġ= Ġ 0 ĊĠĠĠ Ġcol Height s . forEach Indexed Ġ{ Ġindex , Ġheight Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( height Ġ< ĠminHeight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Ġ= Ġindex ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcolumn Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠSt agger ed Card ( index : ĠInt , Ġroute : ĠString ) Ġ{ ĊĠĠĠ ĠColumn ( modifier Ġ= ĠModifier . padding ( 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( index Ġ% Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ 9 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 2 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( colors [ index Ġ% Ġcolors . size ]) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġroute . capitalize First Letter (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠTextStyle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontSize Ġ= Ġ 1 6 . sp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextAlign Ġ= ĠText Align . Center ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }