Thuta Learning
ရှာဖွေရန်
IntermediateMobile Developmentintermediate

Text & Input (TextField, Button)

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Text & Input (TextField, Button) ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် Android Studio/Compose code ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

TextField က user ကနေ text input လက်ခံဖို့ composable ပါ — `value`/`onValueChange` parameter ၂ ခုကို State (ယခင် lesson) နဲ့ တွဲသုံးရပါတယ် (Compose မှာ TextField က internal state မထားပါ, parent ကနေ control ရပါတယ် — controlled component pattern, React နဲ့ ဆင်တူပါတယ်)။ Button ကတော့ `onClick` lambda ကို trigger ပေးတဲ့ composable ပါ.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

`var email by remember { mutableStateOf("") }` ရေးထားပြီး, `TextField(value = email, onValueChange = { email = it })` လို့ ရေးရင် — user ရိုက်တာနဲ့ `email` state ချက်ချင်း update ဖြစ်ပြီး, TextField ကလည်း screen ပေါ်မှာ user ရိုက်ထားတဲ့ text ကို ပြပေးပါတယ်။ 'Submit' Button ကို click ရင် `email` value ကို validate/submit လုပ်နိုင်ပါတယ်.

အတူတူ ကြည့်မယ်

kotlin
@Composable
fun LoginForm() {
    var email by remember { mutableStateOf("") }
    var password by remember { mutableStateOf("") }

    Column(modifier = Modifier.padding(16.dp)) {
        TextField(
            value = email,
            onValueChange = { email = it },
            label = { Text("Email") }
        )
        TextField(
            value = password,
            onValueChange = { password = it },
            label = { Text("Password") },
            visualTransformation = PasswordVisualTransformation()
        )
        Button(onClick = { println("Login: $email") }) {
            Text("Login")
        }
    }
}
You should see
TextField ၂ ခုမှာ ရိုက်ထည့်ပြီး Login button ကို click ရင် Logcat ထဲမှာ 'Login: <email>' ကို ပြပါလိမ့်မယ်။

၅ မိနစ် စမ်းကြည့်

`LoginForm` composable ကို run ကြည့်ပါ — email/password ရိုက်ထည့်ပြီး Login button ကို click ကြည့်ကာ Logcat output ကို ကြည့်ကြည့်ပါ။

သတိလေးတစ်ချက်

Form validation (email format, password length) ကို client-side မှာသာ မှီခိုမနေပါနှင့် — production app မှာ server-side validation ကိုပါ အမြဲ ထည့်ရပါမယ် (client validation ကို bypass လုပ်လို့ရနိုင်ပါတယ်)။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • TextField ကို `onValueChange` မပါဘဲ ရေးခြင်း — user ရိုက်လို့ မရနိုင်ပါ (controlled component ဆိုတော့ parent က update ပြန်မလုပ်ရင် value ရပ်နေမှာပါ)
  • Password field မှာ `visualTransformation = PasswordVisualTransformation()` ထည့်ဖို့ မေ့ခြင်း — password ကို plain text အနေနဲ့ ပြသွားနိုင်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

`LoginForm` composable ကို run ကြည့်ပါ — email/password ရိုက်ထည့်ပြီး Login button ကို click ကြည့်ကာ Logcat output ကို ကြည့်ကြည့်ပါ။

You'll know it worked when: TextField ၂ ခုမှာ ရိုက်ထည့်ပြီး Login button ကို click ရင် Logcat ထဲမှာ 'Login: <email>' ကို ပြပါလိမ့်မယ်။

Text & Input (TextField, Button) | Thuta Learning