Dart, Flutter’ın temelini oluşturan modern bir programlama dilidir. Değişkenler ve veri tipleri, Dart’ta kod yazarken en kritik konseptlerden biridir. Bu rehberde, Dart’ta değişken tanımlama, veri tipleri ve Null Safety kurallarını örneklerle açıklayacağız.
1. Değişken Nedir?
Değişkenler, verileri geçici olarak saklamak için kullanılan isimlendirilmiş bellek alanlarıdır. Dart’ta değişkenler iki şekilde tanımlanabilir:
1.1. Açık (Explicit) Tip Belirterek
String isim = "Ahmet"; // String tipinde
int yas = 25; // int (tamsayı) tipinde
double boy = 1.75; // double (ondalıklı sayı) tipinde
bool ogrenciMi = true; // bool (true/false) tipinde
1.2. Kapalı (Implicit) Tip Belirtmeden (var
)
Dart, var
anahtar kelimesiyle değişken tipini otomatik çıkarır (type inference):
var mesaj = "Merhaba"; // Dart bunun String olduğunu anlar
var sayi = 42; // int olarak çıkarım yapar
⚠️ Dikkat: var
ile tanımlanan değişkenin tipi sonradan değiştirilemez:
var sayi = 10;
sayi = "on"; // HATA! sayi artık int tipinde.
2. Temel Veri Tipleri
Dart’ta başlıca 4 temel veri tipi vardır:
Veri Tipi | Açıklama | Örnek |
---|---|---|
int | Tamsayı (64-bit) | int yas = 30; |
double | Ondalıklı sayı | double pi = 3.14; |
String | Metin (UTF-16) | String isim = "Ali"; |
bool | Mantıksal (true /false ) | bool cevap = false; |
2.1. int
ve double
Kullanımı
int para = 100;
double vergi = 0.18;
var toplam = para + (para * vergi); // 118.0 (double olur)
2.2. String
İşlemleri
String ad = "Elif";
String soyad = "Yılmaz";
// String birleştirme
var tamAd = ad + " " + soyad; // "Elif Yılmaz"
// String interpolation (Daha modern yöntem)
var tanitim = "Adım $ad ve ${soyad.length} harfli bir soyadım var.";
// Çıktı: "Adım Elif ve 6 harfli bir soyadım var."
2.3. bool
Mantıksal İfadeler
bool havaSicak = true;
bool yagmurYagiyor = false;
if (havaSicak && !yagmurYagiyor) {
print("Dışarı çıkabilirsiniz!");
}
3. Özel Veri Tipleri
3.1. dynamic
(Esnek Tip)
Değişkenin tipini sonradan değiştirmek isterseniz dynamic
kullanın:
dynamic esnek = 10; // Şimdi int
esnek = "on"; // Şimdi String (Hata vermez)
3.2. final
ve const
(Sabitler)
final
: Değeri runtime’da (çalışma anında) belirlenir, sonradan değişmez.const
: Değeri compile-time’da (derleme anında) belirlenir, sonradan değişmez.
final DateTime simdi = DateTime.now(); // Runtime'da belirlenir
const double pi = 3.14; // Derleme anında sabitlenir
final liste = [1, 2, 3];
liste.add(4); // final liste içeriği değişebilir, ama liste = [5,6] yapılamaz
4. Null Safety Kuralları
Dart’ta null güvenliği (sound null safety) varsayılan olarak açıktır. Yani bir değişken null
olamaz, amaç runtime hatalarını önlemektir.
4.1. Nullable (?) ve Non-Nullable Tipler
String? ad = null; // "?" ile nullable yapılır (null olabilir)
String soyad = "Demir"; // Non-nullable (null olamaz)
print(ad?.length); // null ise hata vermez (null döner)
print(soyad.length); // Doğrudan erişim
4.2. !
Operatörü (Null Assertion)
Emin olduğunuz durumlarda !
kullanarak Dart’a “bu değişken null değil” diyebilirsiniz:
String? mesaj = "Merhaba";
print(mesaj!.length); // ! ile null olmadığını garanti ediyoruz
4.3. late
Anahtar Kelimesi
Değişkenin değerini sonradan atayacağınızı belirtir:
late String kullaniciAdi; // Şimdilik null, ama sonra atanacak
void main() {
kullaniciAdi = "flutter_developer"; // Hata vermez
}
5. Örnek Uygulama: Kullanıcı Bilgileri
void main() {
// Kullanıcı bilgileri
String ad = "Ayşe";
int yas = 28;
double boy = 1.65;
bool evliMi = false;
String? email = null; // Nullable
// Bilgileri ekrana yazdırma
print("""
Ad: $ad
Yaş: $yas
Boy: $boy
Evli mi? ${evliMi ? 'Evet' : 'Hayır'}
E-posta: ${email ?? 'Kayıtlı değil'}
""");
}
Çıktı:
Ad: Ayşe
Yaş: 28
Boy: 1.65
Evli mi? Hayır
E-posta: Kayıtlı değil
Sonuç
- Dart’ta değişkenler
var
,final
,const
veya açık tip (int
,String
) ile tanımlanır. - Null Safety sayesinde
null
hataları derleme anında yakalanır. dynamic
,late
ve?
operatörleriyle esnek yapılar oluşturulabilir.