// package Ġcom . jes us ro jo . compose demo . state . examples . start Ċ // Ċ // import Ġandroidx . compose . foundation . click able Ċ // import Ġandroidx . compose . foundation . layout . Arrange ment Ċ // import Ġandroidx . compose . foundation . layout . Column Ċ // import Ġandroidx . compose . foundation . layout . Padding Values Ċ // import Ġandroidx . compose . foundation . layout . Row Ċ // import Ġandroidx . compose . foundation . layout . fill Max Width Ċ // import Ġandroidx . compose . foundation . layout . padding Ċ // import Ġandroidx . compose . foundation . lazy . Lazy Column Ċ // import Ġandroidx . compose . foundation . lazy . items Ċ // import Ġandroidx . compose . material . Button Ċ // import Ġandroidx . compose . material . Icon Ċ // import Ġandroidx . compose . material . Local Content Color Ċ // import Ġandroidx . compose . material . Text Ċ // import Ġandroidx . compose . runtime . Composable Ċ // import Ġandroidx . compose . runtime . remember Ċ // import Ġandroidx . compose . ui . Modifier Ċ // import Ġandroidx . compose . ui . res . string Resource Ċ // import Ġandroidx . compose . ui . tool ing . preview . Preview Ċ // import Ġandroidx . compose . ui . unit . dp Ċ // import Ġcom . jes us ro jo . compose demo . state . todo . Todo Icon Ċ // import Ġcom . jes us ro jo . compose demo . state . todo . Todo Item Ċ // import Ġcom . jes us ro jo . compose demo . state . util . generate Random Todo Item Ċ // import Ġkotlin . random . Random Ċ // Ċ // /** Ċ // Ġ* ĠStateless Ġcomponent Ġthat Ġis Ġresponsible Ġfor Ġthe Ġentire Ġtodo Ġscreen . Ċ // Ġ* Ċ // Ġ* Ġ@ param Ġitems Ġ( state ) Ġlist Ġof Ġ[ Todo Item ] Ġto Ġdisplay Ċ // Ġ* Ġ@ param Ġon AddItem Ġ( event ) Ġrequest Ġan Ġitem Ġbe Ġadded Ċ // Ġ* Ġ@ param Ġon Remove Item Ġ( event ) Ġrequest Ġan Ġitem Ġbe Ġremoved Ċ // Ġ*/ Ċ // Ċ //// https :// developer . android . com / code labs / jet pack - compose - state # 3 Ċ //@ Composable Ċ // fun ĠTodo Screen Start ( Ċ // ĠĠĠ Ġitems : ĠList < Todo Item >, Ċ // ĠĠĠ Ġon AddItem : Ġ( Todo Item ) Ġ-> ĠUnit , Ċ // ĠĠĠ Ġon Remove Item : Ġ( Todo Item ) Ġ-> ĠUnit Ċ // ) Ġ{ Ċ // ĠĠĠ ĠColumn Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠLazy Column ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . weight ( 1 f ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Padding Ġ= ĠPadding Values ( top Ġ= Ġ 8 . dp ) Ċ // ĠĠĠĠĠĠĠ Ġ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( items Ġ= Ġitems ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTodo Row ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtodo Ġ= Ġit , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Clicked Ġ= Ġ{ Ġon Remove Item ( it ) Ġ}, Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . fill Parent Max Width () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ// ĠFor Ġquick Ġtesting , Ġa Ġrandom Ġitem Ġgenerator Ġbutton Ċ // ĠĠĠĠĠĠĠ ĠButton ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon AddItem ( generate Random Todo Item ()) Ġ}, Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width (), Ċ // ĠĠĠĠĠĠĠ Ġ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠText (" Add Ġrandom Ġitem ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ // /** Ċ // Ġ* ĠStateless Ġcomp osable Ġthat Ġdisplays Ġa Ġfull - width Ġ[ Todo Item ]. Ċ // Ġ* Ċ // Ġ* Ġ@ param Ġtodo Ġitem Ġto Ġshow Ċ // Ġ* Ġ@ param Ġon Item Clicked Ġ( event ) Ġnotify Ġcaller Ġthat Ġthe Ġrow Ġwas Ġclicked Ċ // Ġ* Ġ@ param Ġmodifier Ġmodifier Ġfor Ġthis Ġelement Ċ // Ġ*/ Ċ //@ Composable Ċ // fun ĠTodo Row ( todo : ĠTodo Item , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Clicked : Ġ( Todo Item ) Ġ-> ĠUnit , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġicon Alpha : ĠFloat Ġ= Ġremember ( todo . id ) Ġ{ Ġrandom Tint () Ġ} /* step 5 - 3 / 3 */) Ġ{ Ċ // ĠĠĠ ĠRow ( Ċ // ĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ Ġon Item Clicked ( todo ) Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 1 6 . dp , Ġvertical Ġ= Ġ 8 . dp ), Ċ // ĠĠĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Space Between Ċ // ĠĠĠ Ġ) Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠText ( todo . task ) Ċ // ĠĠĠĠĠĠĠ Ġ// val Ġicon Alpha Ġ= Ġrandom Tint () Ġ// step 5 - 1 / 3 Ċ // ĠĠĠĠĠĠĠ Ġ// val Ġicon Alpha : ĠFloat Ġ= Ġremember ( todo . id ) Ġ{ Ġrandom Tint () Ġ} Ġ// step 5 - 2 / 3 Ċ // ĠĠĠĠĠĠĠ ĠIcon ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= Ġtodo . icon . image Vector , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠLocal Content Color . current . copy ( alpha Ġ= Ġicon Alpha ), // step 5 Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġstring Resource ( id Ġ= Ġtodo . icon . content Description ) Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ // private Ġfun Ġrandom Tint (): ĠFloat Ġ{ Ċ // ĠĠĠ Ġreturn ĠRandom . next Float (). coerce In ( 0 . 3 f , Ġ 0 . 9 f ) Ċ //} Ċ // Ċ //@ Preview Ċ //@ Composable Ċ // fun ĠPreview Todo Screen () Ġ{ Ċ // ĠĠĠ Ġval Ġitems Ġ= ĠlistOf ( Ċ // ĠĠĠĠĠĠĠ ĠTodo Item (" Learn Ġcompose ", ĠTodo Icon . Event ), Ċ // ĠĠĠĠĠĠĠ ĠTodo Item (" Take Ġthe Ġc odel ab "), Ċ // ĠĠĠĠĠĠĠ ĠTodo Item (" Apply Ġstate ", ĠTodo Icon . Done ), Ċ // ĠĠĠĠĠĠĠ ĠTodo Item (" Build Ġdynamic ĠU Is ", ĠTodo Icon . Square ) Ċ // ĠĠĠ Ġ) Ċ // ĠĠĠ ĠTodo Screen Start ( items , Ġ{}, Ġ{}) Ċ //} Ċ // Ċ //@ Preview Ċ //@ Composable Ċ // fun ĠPreview Todo Row () Ġ{ Ċ // ĠĠĠ Ġval Ġtodo Ġ= Ġremember Ġ{ Ġgenerate Random Todo Item () Ġ} Ċ // ĠĠĠ ĠTodo Row ( todo Ġ= Ġtodo , Ġon Item Clicked Ġ= Ġ{}, Ġmodifier Ġ= ĠModifier . fill Max Width ()) Ċ //} Ċ