package Ġcom . github . sat osh un . example . compose Ċ Ċ import Ġandroidx . compose . Composable Ċ import Ġandroidx . compose . Model Ċ import Ġandroidx . compose . remember Ċ import Ġandroidx . compose . state Ċ import Ġandroidx . compose . state For Ċ import Ġandroidx . ui . core . Text Ċ import Ġandroidx . ui . foundation . Clickable Ċ import Ġandroidx . ui . layout . Column Ċ import Ġandroidx . ui . layout . Column Scope Ċ import Ġandroidx . ui . layout . Container Ċ import Ġandroidx . ui . layout . Layout Padding Ċ import Ġandroidx . ui . material . Checkbox Ċ import Ġandroidx . ui . material . ripple . R ipple Ċ import Ġandroidx . ui . unit . dp Ċ Ċ class ĠRemember Test ( ĊĠ Ġvar Ġcount : ĠInt Ġ= Ġ 0 Ċ ) Ċ Ċ @ Model Ċ class ĠRemember 2 Test ( ĊĠ Ġvar Ġcount : ĠInt Ġ= Ġ 0 Ċ ) Ċ Ċ @ Model Ċ class ĠRemember 3 Test Ġ{ ĊĠ Ġvar Ġcount : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġset ĊĊĠ Ġfun Ġadd Count () Ġ{ ĊĠĠĠ Ġcount Ġ+= Ġ 1 ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠMy Checkbox () Ġ{ ĊĠ Ġvar Ġchecked Ġby Ġstate Ġ{ Ġfalse Ġ} ĊĊĠ ĠCheckbox ( checked Ġ= Ġchecked , Ġon Checked Change Ġ= Ġ{ Ġchecked Ġ= Ġit Ġ}) Ċ } Ċ Ċ @ Composable Ċ fun ĠState Example () Ġ{ ĊĠ Ġvar Ġcount Ġby Ġstate Ġ{ Ġ 0 Ġ} ĊĠ Ġval Ġ( count 2 , Ġcount 2 Callback ) Ġ= Ġstate Ġ{ Ġ 0 Ġ} ĊĊĠ ĠColumn Ġ{ ĊĠĠĠ ĠMy Checkbox () ĊĊĠĠĠ Ġprintln (" 1 ") ĊĠĠĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠ Ġprintln (" 2 ") ĊĠĠĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠĠĠ Ġcount Ġ+= Ġ 1 ĊĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 3 ") ĊĠĠĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġprintln (" 4 ") ĊĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprintln (" 1 1 ") ĊĠĠĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠ Ġprintln (" 2 2 ") ĊĠĠĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠĠĠ Ġcount 2 Callback ( count 2 Ġ+ Ġ 1 ) ĊĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 3 3 ") ĊĠĠĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġprintln (" 4 4 ") ĊĠĠĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount 2 . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠOnly State () ĊĠĠĠ ĠModel And State () ĊĠĠĠ ĠOnly Model () ĊĊĠĠĠ ĠPass Model Value () ĊĊĠĠĠ ĠRemember () ĊĠĠĠ ĠPrivate Property Model () ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠPass Model Value () Ġ{ ĊĠ Ġval Ġcount Ġ= ĠRemember 2 Test () ĊĊĠ ĠContainer ( Layout Padding ( start Ġ= Ġ 2 4 . dp )) Ġ{ ĊĠĠĠ ĠText ( text Ġ= Ġ" Parent ĠModel ") ĊĠ Ġ} ĊĊĠ Ġprintln (" a ") ĊĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprintln (" b ") ĊĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠ Ġcount . count Ġ+= Ġ 1 ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠ Ġprintln (" c ") ĊĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" d ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . count . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ ĠPass Child Value ( count Ġ= Ġcount ) Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠPass Child Value ( count : ĠRemember 2 Test ) Ġ{ ĊĠ ĠContainer ( Layout Padding ( start Ġ= Ġ 2 4 . dp )) Ġ{ ĊĠĠĠ ĠText ( text Ġ= Ġ" Child ĠModel ") ĊĠ Ġ} ĊĊĠ Ġprintln (" aa ") ĊĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprintln (" bb ") ĊĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠ Ġcount . count Ġ+= Ġ 1 ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠ Ġprintln (" cc ") ĊĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" dd ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . count . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ // ĠNG Ċ @ Composable Ċ private Ġfun ĠColumn Scope . Only State () Ġ{ ĊĠ Ġval Ġcount Ġby Ġstate Ġ{ ĠRemember Test () Ġ} ĊĊĠ ĠContainer ( Layout Padding ( start Ġ= Ġ 2 4 . dp )) Ġ{ ĊĠĠĠ ĠText ( text Ġ= Ġ" Only ĠState ") ĊĠ Ġ} ĊĊĠ Ġprintln (" 1 1 1 ") ĊĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprintln (" 2 2 2 ") ĊĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠ Ġcount . count Ġ+= Ġ 1 ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠ Ġprintln (" 3 3 3 ") ĊĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 4 4 4 ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . count . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ // ĠOK Ċ @ Composable Ċ private Ġfun ĠColumn Scope . Model And State () Ġ{ ĊĠ Ġval Ġcount Ġby Ġstate Ġ{ ĠRemember 2 Test () Ġ} ĊĊĠ ĠContainer ( Layout Padding ( start Ġ= Ġ 2 4 . dp )) Ġ{ ĊĠĠĠ ĠText ( text Ġ= Ġ" Model Ġand ĠState ") ĊĠ Ġ} ĊĊĠ Ġprintln (" 1 1 1 1 1 ") ĊĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprintln (" 2 2 2 2 2 ") ĊĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠ Ġcount . count Ġ+= Ġ 1 ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠ Ġprintln (" 3 3 3 3 3 ") ĊĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 4 4 4 4 4 ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . count . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ // ĠOK Ċ @ Composable Ċ private Ġfun ĠColumn Scope . Only Model () Ġ{ ĊĠ Ġval Ġcount Ġ= ĠRemember 2 Test () ĊĊĠ ĠContainer ( Layout Padding ( start Ġ= Ġ 2 4 . dp )) Ġ{ ĊĠĠĠ ĠText ( text Ġ= Ġ" Only ĠModel ") ĊĠ Ġ} ĊĊĠ Ġprintln (" 1 1 1 1 1 1 ") ĊĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprintln (" 2 2 2 2 2 2 ") ĊĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠ Ġcount . count Ġ+= Ġ 1 ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠ Ġprintln (" 3 3 3 3 3 3 ") ĊĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 4 4 4 4 4 4 ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . count . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠColumn Scope . State For ( id : ĠInt ): ĠInt Ġ{ ĊĠ Ġvar Ġcount Ġ= Ġstate For ( id ) Ġ{ Ġ 0 Ġ} ĊĠ Ġreturn Ġcount . value Ċ } Ċ Ċ // ĠNG Ċ @ Composable Ċ private Ġfun ĠColumn Scope . Remember () Ġ{ ĊĠ Ġval Ġcount Ġ= Ġremember Ġ{ ĠRemember Test () Ġ} ĊĊĠ Ġprintln (" 1 1 1 ") ĊĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprintln (" 2 2 2 ") ĊĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠ Ġcount . count Ġ+= Ġ 1 ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠ Ġprintln (" 3 3 3 ") ĊĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 4 4 4 ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . count . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ private Ġfun ĠColumn Scope . Private Property Model () Ġ{ ĊĠ Ġval Ġcount Ġ= ĠRemember 3 Test () ĊĊĠ ĠContainer ( Layout Padding ( start Ġ= Ġ 2 4 . dp )) Ġ{ ĊĠĠĠ ĠText ( text Ġ= Ġ" Private Property Model ") ĊĠ Ġ} ĊĊĠ Ġprintln (" 1 1 1 1 1 1 ") ĊĠ ĠR ipple ( bounded Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġprintln (" 2 2 2 2 2 2 ") ĊĠĠĠ ĠClick able ( onClick Ġ= Ġ{ ĊĠĠĠĠĠ Ġprintln (" onClick ") ĊĠĠĠĠĠ Ġcount . add Count () ĊĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠ Ġprintln (" 3 3 3 3 3 3 ") ĊĠĠĠĠĠ ĠContainer ( Layout Padding ( 2 4 . dp )) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 4 4 4 4 4 4 ") ĊĠĠĠĠĠĠĠ ĠText ( text Ġ= Ġcount . count . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ