Dart: Değişkenler ve Veri Tipleri

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 TipiAçıklamaÖrnek
intTamsayı (64-bit)int yas = 30;
doubleOndalıklı sayıdouble pi = 3.14;
StringMetin (UTF-16)String isim = "Ali";
boolMantı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 varfinalconst veya açık tip (intString) ile tanımlanır.
  • Null Safety sayesinde null hataları derleme anında yakalanır.
  • dynamiclate ve ? operatörleriyle esnek yapılar oluşturulabilir.
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments