CodeBlanks Logo Icon CodeBlanks

validator

validator callback ile alan doğrulaması yapmayı öğrenirsin.

validator nedir?

validator, bir TextFormField'a verilen callback'dir. Kullanıcı alanı doldurduğunda çağrılır ve bir hata mesajı (String) ya da null döndürür. null geçerli anlamına gelir.

TextFormField(
  validator: (deger) {
    if (deger!.isEmpty) return 'Boş bırakılamaz';
    return null;
  },
)

Hata mesajı alanın altında görünür.

errorText gösterimi

validator tarafından döndürülen String, TextFormField'ın decoration'ı altında errorText olarak gösterilir. Kullanıcı her yazdığında validator yeniden çalışır ve hata mesajı güncellenir.

validator: (deger) {
  if (deger!.length < 3) {
    return 'En az 3 karakter';
  }
  return null;
}

Hata mesajı otomatik olarak kırmızı renkte görünür.

Uygulama validator ile boş alan kontrolü

Ekrani stateful widget'ında _formKey tanımla. Bir Form içine TextFormField koy; validator boş değer için 'Boş bırakılamaz' döndürsün. Butona basıldığında _formKey.currentState!.validate() çağrılsın ve sonuç true ise print('geçerli') yazsın. main'de print('form hazır') çağır.

Başlangıç kodu

main.dart
import 'package:flutter/material.dart';

void main() {
  print('form hazır');
  runApp(MaterialApp(home: Ekrani()));
}

class Ekrani extends StatefulWidget {
  @override
  _EkraniState createState() => _EkraniState();
}

class _EkraniState extends State<Ekrani> {
  // _formKey ekle

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
        padding: EdgeInsets.all(16),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              // validator ekleyin
              TextFormField(),
              ElevatedButton(
                onPressed: () {
                  // validate çağır
                },
                child: Text('Kontrol et'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Örnek çözüm

main.dart
import 'package:flutter/material.dart';

void main() {
  print('form hazır');
  runApp(MaterialApp(home: Ekrani()));
}

class Ekrani extends StatefulWidget {
  @override
  _EkraniState createState() => _EkraniState();
}

class _EkraniState extends State<Ekrani> {
  final _formKey = GlobalKey<FormState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
        padding: EdgeInsets.all(16),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              TextFormField(
                validator: (deger) {
                  if (deger!.isEmpty) {
                    return 'Boş bırakılamaz';
                  }
                  return null;
                },
              ),
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    print('geçerli');
                  }
                },
                child: Text('Kontrol et'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Beklenen çıktı

form hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 validator callback geçerli bir değer için ne döndürmelidir?

  • null Doğru cevap
  • Bir hata mesajı String'i
  • true
  • false

Açıklama: validator, değer geçerliyse null döndürür; hatalıysa bir hata mesajı String döndürür.

2 validator'da hata mesajı döndür

Soru
validator: (deger) {
  if (deger!.isEmpty) {
    ____ 'Boş bırakılamaz';
  }
  return null;
}
Cevap
validator: (deger) {
  if (deger!.isEmpty) {
    return 'Boş bırakılamaz';
  }
  return null;
}

Açıklama: validator, hatalı değer durumunda return ile bir hata mesajı String döndürür; geçerliyse null döndürür.

3 validator parçaları

Kavram Anlamı
validator Alanı denetleyen callback
null dönüşü Değerin geçerli olduğu anlamı
String dönüşü Hata mesajı anlamı
errorText Hatanın gösterildiği yer

Orta seviye bölümündeki tüm dersler