validator
- Flutter kursu
- Orta seviye
- Ders 32/99
- 4 dk
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
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
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
validator: (deger) {
if (deger!.isEmpty) {
____ 'Boş bırakılamaz';
}
return null;
}
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 |