ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
ဒီ round က learn ခဲ့ပြီးသား Basic/Intermediate concept တွေကို လက်တွေ့ ပြန်စမ်းကြည့်ဖို့ round ပါ — Composable/State/Modifier ကို ခွဲသိခြင်း, Compose code ထဲက error ကို ရှာဖွေခြင်း, `remember` ကို မှန်ကန်စွာ သုံးတတ်ခြင်းကိုပဲ ကိုယ်တိုင် လက်တွေ့ လုပ်ကြည့်ရမှာပါ။ Task တစ်ခုချင်းစီက ၅ မိနစ်ထက် မကြာသင့်ပါဘူး။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
Task 1: '@Composable function', 'State (remember)', 'Modifier' သုံးလုံးရဲ့ တာဝန် ကွာခြားချက်ကို ဝါကျတစ်ကြောင်းစီနဲ့ ရှင်းပြပါ။ Task 2: `var count = 0` (remember မပါ) ကို Composable function ထဲမှာ ရေးပြီး Button click ရင် `count++` လုပ်ထားရင် ဘာဖြစ်မလဲ ခန့်မှန်းပြီး ရေးပါ။ Task 3: LazyColumn ကို ဘယ်အခါ Column အစား သုံးသင့်လဲ ဥပမာနဲ့တကွ ရေးပါ။ Task 4: Screen rotate လုပ်လိုက်ရင် `remember` state ပျောက်သွားနိုင်တယ်ဆိုရင် ဘယ် solution ကို သုံးရမလဲ ရေးပါ။
အတူတူ ကြည့်မယ်
# Task 2 - state without remember
var count = 0 // NOT wrapped in remember!
Button(onClick = { count++ }) { Text("Count: $count") }
Result: clicking the button triggers recomposition, but
since `count` is a plain local variable (not remember'd),
it resets to 0 every time recomposition runs — the UI
never visibly changes past "Count: 1" (it recomposes
before you can see anything higher).
# Task 4 - surviving rotation
Use rememberSaveable instead of remember for state that
must survive a configuration change (screen rotation).Composable/State/Modifier ကွာခြားချက်၊ remember-less state bug၊ rememberSaveable ဆုံးဖြတ်ချက် ရရှိလာမည်။၅ မိနစ် စမ်းကြည့်
ကိုယ်ပိုင် Composable တစ်ခု ရေးပြီး တမင် `remember` မထည့်ဘဲ state bug ထည့်ကြည့်ပါ — run ကြည့်ပြီး ဘာဖြစ်လဲ ကိုယ်တိုင် သက်သေပြကြည့်ပါ။
သတိလေးတစ်ချက်
ဒီ round မှာ physical device setup လုပ်ဖို့ မလိုပါဘူး — emulator (ဒါမှမဟုတ် Preview panel) ကိုပဲ အဓိကထား practice လုပ်ခြင်းပါ။