0Pricing
Android Academy · Ders

Girdiyi Doğrulama

Girdiyi kontrol edin ve yararlı hatalar gösterin.

Girdiyi Doğrulama, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.

Girdiyi Neden Doğrulamalı?

Kullanıcılar hata yapar: boş bir ad, hatalı biçimlendirilmiş bir e-posta, çok kısa bir parola. İyi formlar bu hataları erkenden yakalar ve neyin nasıl düzeltileceğini açıkça anlatır.

Bu derste Compose formlarına doğrulama ekleyecek, satır içi hataları gösterecek ve her şey geçerli olana kadar gönderme düğmesini devre dışı bırakacaksınız.

Doğrulama Kuralı Yalnızca Bir İşlevdir

Doğrulama mantığını, bir değer alan ve geçerli olup olmadığını (veya bir hata mesajını) döndüren yalın Kotlin işlevleri olarak tutun. Bu, kuralları yeniden kullanılabilir ve test edilmesi kolay hâle getirir.

Basit bir e-posta denetimi aşağıda verilmiştir.

fun emailError(email: String): String? = when {
    email.isBlank() -> "Email is required"
    !email.contains("@") -> "Enter a valid email"
    else -> null
}

Hatayı Alanda Gösterme

OutlinedTextField, bir isError bayrağına ve bir supportingText alanına sahiptir. Kırmızı bir alanı altında bir mesajla göstermek için bunları birlikte kullanın.

Hata doğrudan doğrulama işlevinizden gelir.

var email by remember { mutableStateOf("") }
val error = emailError(email)

OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    label = { Text("Email") },
    isError = error != null,
    supportingText = { if (error != null) Text(error) }
)

Çok Erken Uyarı Vermeyin

Kullanıcı alana henüz dokunmamışken "E-posta gerekli" mesajını göstermek rahatsız edici olabilir. Yaygın bir çözüm, bir alanın touched olup olmadığını izlemek ve hataları yalnızca bundan sonra göstermektir.

Burada alan odağını kaybettiğinde alanı dokunulmuş olarak işaretliyoruz.

var email by remember { mutableStateOf("") }
var touched by remember { mutableStateOf(false) }
val error = if (touched) emailError(email) else null

OutlinedTextField(
    value = email,
    onValueChange = { email = it },
    label = { Text("Email") },
    isError = error != null,
    modifier = Modifier.onFocusChanged {
        if (!it.isFocused) touched = true
    }
)

Parola Doğrulama

Parolaların genellikle birden fazla kuralı vardır. Kullanıcının her seferinde tek bir şeyi düzeltmesi için başarısız olan ilk kuralı döndürün.

Bunun, içinde kullanıcı arayüzü bulunmayan saf bir işlev olmaya devam ettiğine dikkat edin.

fun passwordError(pw: String): String? = when {
    pw.length < 8 -> "At least 8 characters"
    pw.none { it.isDigit() } -> "Add a number"
    pw.none { it.isUpperCase() } -> "Add an uppercase letter"
    else -> null
}

Alanlar Arası Doğrulama

Bazı kurallar, "parola onayı parola ile eşleşmelidir" örneğinde olduğu gibi iki alanı kapsar. Bunlar tek alanlı bir işlevde bulunamaz; bu nedenle her iki değerin de kullanılabildiği yerde hesaplanmaları gerekir.

var password by remember { mutableStateOf("") }
var confirm by remember { mutableStateOf("") }

val confirmError =
    if (confirm.isNotEmpty() && confirm != password)
        "Passwords don't match"
    else null

Geçerli Olana Kadar Göndermeyi Devre Dışı Bırakma

Tüm kurallar başarılı olduğunda formun tamamı geçerlidir. Tek bir boolean değer hesaplayın ve gönderme düğmesini etkinleştirmek veya devre dışı bırakmak için bunu kullanın.

Bu, kullanıcının hatalı verileri en başta göndermesini önler.

val formValid =
    emailError(email) == null &&
    passwordError(password) == null &&
    confirmError == null

Button(onClick = { submit() }, enabled = formValid) {
    Text("Create Account")
}

Gönderme Sırasında Doğrulama

Satır içi doğrulama kullanıcıya yol gösterir; ancak kullanıcı gönderme düğmesine bastığında her şeyi yeniden denetlemelisiniz. Gönderme işleyicisi devam edilip edilmeyeceğine veya tüm hataların aynı anda gösterilip gösterilmeyeceğine karar verir.

fun onSubmit() {
    val errors = listOfNotNull(
        emailError(email),
        passwordError(password)
    )
    if (errors.isEmpty()) {
        register(email, password)
    } else {
        // show errors / mark fields touched
    }
}

Yazılabilecekleri Sınırlandırma

Doğrulama önleyici de olabilir. Telefon numarası için onValueChange içinde rakam olmayan karakterleri yok sayın; böylece hatalı girdi duruma hiç girmez.

Bu, kullanıcıyı sonradan uyarmaktan daha kullanışlıdır.

var phone by remember { mutableStateOf("") }

OutlinedTextField(
    value = phone,
    onValueChange = { input ->
        phone = input.filter { it.isDigit() }.take(10)
    },
    label = { Text("Phone") }
)

Doğrulamayı ViewModel'de Merkezileştirme

Gerçek ekranlarda doğrulamayı ViewModel içinde tutun; böylece kullanıcı arayüzü yalnızca sonuçları görüntüler. ViewModel hataları ve bir isValid bayrağını dışa sunar.

Bu, composable'ları basit ve kurallarınızı birim testi yapılabilir hâlde tutar.

class SignUpViewModel : ViewModel() {
    var email by mutableStateOf("")
        private set

    val emailError: String?
        get() = emailError(email)

    val isValid: Boolean
        get() = emailError == null && email.isNotBlank()

    fun onEmailChange(value: String) { email = value }
}

Saf Kotlin: Kuralları Test Etme

Doğrulayıcılar saf işlevler olduğundan onları her yerde çalıştırabilirsiniz. Burada e-posta ve parola kuralları, tıpkı birim testinin onları çağıracağı gibi bağımsız olarak çalıştırılır.

fun emailError(email: String): String? = when {
    email.isBlank() -> "Email is required"
    !email.contains("@") -> "Enter a valid email"
    else -> null
}

fun main() {
    println(emailError(""))
    println(emailError("nope"))
    println(emailError("ada@dev.io"))
}

Hızlı Kontrol

OutlinedTextField üzerindeki hangi özellik çifti, bir alanı geçersiz olarak işaretlemek ve altında bir mesaj göstermek için kullanılır?

Özet

Artık Compose formlarını temiz bir şekilde doğrulayabilirsiniz:

  • Kuralları, bir hata mesajı veya null döndüren saf işlevler olarak tutun.
  • isError + supportingText ile hataları gösterin ve bir alana dokunulmadan önce uyarı vermekten kaçının.
  • Alanlar arası kuralları, her iki değer de görünürken ele alın.
  • Tüm form geçerli olana kadar göndermeyi devre dışı bırakın ve gönderme sırasında yeniden denetleyin.
  • filter ile hatalı girdileri önleyin ve kuralları bir ViewModel'de merkezileştirin.

Sırada: klavye türleri, IME eylemleri ve odak yönetimi var.

Sıkça Sorulan Sorular

“Girdiyi Doğrulama” dersi ücretsiz mi?

Evet — “Girdiyi Doğrulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.

“Girdiyi Doğrulama” dersinde ne öğreneceğim?

Girdiyi kontrol edin ve yararlı hatalar gösterin. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Android Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Girdiyi Doğrulama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. TextField ve Kullanıcı Girdisi
  2. Form Durumunu Yönetme
  3. Girdiyi Doğrulama
  4. Klavye Seçenekleri ve Eylemleri
← Android Academy Sayfasına Dön