CodeBlanks Logo Icon CodeBlanks

Meydan okuma 4

Form ve TextFormField ile giriş doğrulama ekranı yaparsın.

Form ve TextFormField ile doğrulama

Bir giriş doğrulama ekranı yapmak için Form ve TextFormField kullanırsın. TextFormField'ın validator parametresi, girilen metni denetler ve hata varsa bir String döndürür. Hata yoksa null döndürülür. Form, altındaki tüm alanları gruplar ve toplu doğrulama yapmanı sağlar.

TextFormField(
  validator: (value) {
    if (value == null || value.isEmpty) {
      return 'Bos birakilamaz';
    }
    return null;
  },
)

Uygulama Basit form ekranı yap

formHazir adında bir fonksiyon yaz; çağrılınca Form hazir yazdırsın. FormEkrani adında bir StatelessWidget yaz; build metodunda bir Form ve içinde bir TextFormField olsun. TextFormField'ın validator'ı boş değer döndürdüğünde 'Bos birakilamaz' hatası verilsin. main içinde formHazir'ı çağır ve runApp ile başlat.

Başlangıç kodu

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

// formHazir fonksiyonu yaz
// FormEkrani adinda StatelessWidget yaz
// Form ve TextFormField ekle, validator ile bos kontrolu yap

void main() {
}

Örnek çözüm

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

void formHazir() {
  print('Form hazir');
}

class FormEkrani extends StatelessWidget {
  const FormEkrani({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Form(
            child: TextFormField(
              validator: (value) {
                if (value == null || value.isEmpty) {
                  return 'Bos birakilamaz';
                }
                return null;
              },
            ),
          ),
        ),
      ),
    );
  }
}

void main() {
  formHazir();
  runApp(const FormEkrani());
}

Beklenen çıktı

Form hazir

Uygulama Doğrulamalı giriş formu yap

dogrulamaBaslat adında bir fonksiyon yaz; çağrılınca Dogrulama basladi yazdırsın. DogrulamaEkrani adında bir StatefulWidget yaz; build metodunda bir Form ve içinde bir Column olsun. Column'da bir TextFormField (validator ile boş kontrolü) ve bir ElevatedButton bulunsun. main içinde dogrulamaBaslat'ı çağır ve runApp ile başlat.

Başlangıç kodu

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

// dogrulamaBaslat fonksiyonu yaz
// DogrulamaEkrani adinda StatefulWidget yaz
// Form icinde Column: TextFormField (validator ile) ve ElevatedButton olsun

void main() {
}

Örnek çözüm

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

void dogrulamaBaslat() {
  print('Dogrulama basladi');
}

class DogrulamaEkrani extends StatefulWidget {
  const DogrulamaEkrani({super.key});

  @override
  State<DogrulamaEkrani> createState() => _DogrulamaEkraniState();
}

class _DogrulamaEkraniState extends State<DogrulamaEkrani> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Form(
            child: Column(
              children: [
                TextFormField(
                  validator: (value) {
                    if (value == null || value.isEmpty) {
                      return 'Bos birakilamaz';
                    }
                    return null;
                  },
                ),
                ElevatedButton(
                  onPressed: () {},
                  child: Text('Gonder'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

void main() {
  dogrulamaBaslat();
  runApp(const DogrulamaEkrani());
}

Beklenen çıktı

Dogrulama basladi

Soru ve cevaplar

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

1 validator fonksiyonu hata olmadığında ne döndürür?

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

Açıklama: validator fonksiyonu hata olmadığında null döndürür; true, false veya hata mesajı döndürmez.

2 validator parametresini ekle

Soru
TextFormField(
  ____: (value) {
    if (value == null || value.isEmpty) {
      return 'Bos birakilamaz';
    }
    return null;
  },
)
Cevap
TextFormField(
  validator: (value) {
    if (value == null || value.isEmpty) {
      return 'Bos birakilamaz';
    }
    return null;
  },
)

Açıklama: Girdiyi denetlemek için validator parametresi kullanılır; onChanged, onSaved veya onTap doğrulama amacıyla kullanılmaz.

3 Form parçaları

Kavram Anlamı
Form TextFormField'ları gruplar
TextFormField Metin giriş alanı
validator Girdiyi denetleyen callback
null Hata yok dönüş değeri

Başlangıç bölümündeki tüm dersler