๐ŸŽย ์„ ํƒํ•œ ์ƒํƒœ ์ด์ „

ํ•ด๋‹น ์˜ˆ์ œ์—์„œ ์ถ”์ ํ•˜๋Š” ๊ฐ’์€ intem์˜ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ๋ฟ์ด๋ผ์„œ item์„ ์„ ํƒํ•ด๋„ ๊ทธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(checkedState)์€ ์ธ์‹ ํ•˜์ง€๋ชปํ•œ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

  1. ๋ฐ์ดํ„ฐ ํด๋ž˜์Šคย WellnessTask๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌย checkedState๊ฐ€ย Booleanย ๋Œ€์‹ ย MutableState<Boolean>์ด ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Compose์—์„œ ํ•ญ๋ชฉ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ํ•ญ๋ชฉ์„ ๋ณต์‚ฌํ•˜๊ณ  ๋ชฉ๋ก์—์„œ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•œ ํ›„ ๋ณ€๊ฒฝ๋œ ํ•ญ๋ชฉ์„ ๋‹ค์‹œ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Compose์—์„œ ์ด ๋ชฉ๋ก ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์—๋Š” ๋ชจ๋‘ ์žฅ๋‹จ์ ์ด ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ ์ค‘์ธ ๋ชฉ๋ก์˜ ๊ตฌํ˜„์— ๋”ฐ๋ผ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ฝ๋Š” ๋ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๋‹น ์˜ˆ์ œ์—์„œ๋Š” ์ž ์žฌ์ ์œผ๋กœ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ๋ชฉ๋ก ์ž‘์—…์„ ํ”ผํ•˜๊ณ  1๋ฒˆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋ณด์ž.

//As-Is
data class WellnessTask(val id: Int, val label: String, var checked: Boolean = false)

//To-Be
data class WellnessTask(val id: Int, val label: String, val checked: MutableState<Boolean> = mutableStateOf(false))