Dart Programlama Dilini Hızlı Öğrenme Rehberi: 15 Dakikada Temel Bilgiler



Tabii ki, Dart dili hakkında temel bilgileri paylaşabilirim. Dart, özellikle web ve mobil uygulama geliştirmek için tasarlanmış bir programlama dilidir. Google tarafından geliştirilmiş olup, özellikle Flutter çatısı altında popülerdir. Flutter, hem Android hem de iOS platformlarında çalışabilen mobil uygulamalar geliştirmek için kullanılır.


Dart Programlama Dilinin Temelleri

Değişkenler ve Veri Türleri:

Dart'ta int, double, String, bool gibi temel veri türleri bulunur. Örneğin:


dart

Copy code

int sayi = 10;

double oran = 3.14;

String metin = "Merhaba";

bool dogruMu = true;

Fonksiyonlar:

Dart'ta fonksiyonlar void veya bir değer döndürebilir. Örnek:


dart

Copy code

void selamVer() {

  print("Merhaba Dart!");

}


int topla(int a, int b) {

  return a + b;

}

Koşullu İfadeler:

if ve else kullanarak koşullu işlemler yapılır:


dart

Copy code

int sayi = 5;

if (sayi > 0) {

  print("Sayı pozitif");

} else {

  print("Sayı negatif veya sıfır");

}

Döngüler:

for ve while döngüleri ile tekrarlanan işlemler yapılır:


for (int i = 0; i < 5; i++) {

  print("Sayı: $i");

}


int sayac = 0;

while (sayac < 5) {

  print("Sayac: $sayac");

  sayac++;

}

Sınıflar ve Nesneler:

Dart nesne yönelimli bir dildir ve sınıflar üzerinden nesneler oluşturabilir:


class Araba {

  String renk;

  int yil;


  Araba(this.renk, this.yil);


  void bilgiYazdir() {

    print("Araba rengi: $renk, Yılı: $yil");

  }

}


var araba = Araba("Kırmızı", 2020);

araba.bilgiYazdir();

Paketler ve Kütüphaneler:

Dart, geniş bir standart kütüphaneye sahiptir ve ek paketlerle genişletilebilir. pub.dev Dart paketleri için ana repodur.



Koleksiyonlar:

Dart'ta listeler, haritalar ve kümeler gibi koleksiyon yapıları vardır.


Listeler: Sıralı eleman koleksiyonudur.


List<String> isimler = ['Ali', 'Veli', 'Ayşe'];

Haritalar: Anahtar-değer çiftlerinden oluşan koleksiyonlardır.

dart

Copy code

Map<String, int> telefonDefteri = {'Ali': 12345, 'Veli': 23456};

Kümeler: Benzersiz eleman koleksiyonudur.


Set<String> renkler = {'kırmızı', 'yeşil', 'mavi'};

Async ve Await:

Asenkron programlama, Dart'ta async ve await anahtar kelimeleri ile yapılır. Bu, özellikle ağ istekleri ve uzun süren işlemler için yararlıdır.


Future<void> uzunSurenIslem() async {

  await Future.delayed(Duration(seconds: 3));

  print("İşlem tamamlandı");

}

Hata Yönetimi:

Hatalar try, catch ve finally blokları ile ele alınır.


try {

  int sonuc = 100 ~/ 0; // Sıfıra bölme hatası

} catch (e) {

  print('Bir hata oluştu: $e');

} finally {

  print('Bu blok her durumda çalışır');

}

Arrow Fonksiyonlar ve Lambda İfadeleri:

Dart'ta kısa fonksiyonlar ok ok (=>) notasyonu ile yazılabilir.



List<int> sayilar = [1, 2, 3];

sayilar.forEach((sayi) => print(sayi));

Yüksek Seviye Fonksiyonlar:

Fonksiyonlar Dart'ta birinci sınıf vatandaştır; başka fonksiyonlara parametre olarak verilebilir veya döndürülebilir.


void selamVer(Function selamFonksiyonu) {

  selamFonksiyonu();

}


void merhaba() {

  print("Merhaba!");

}


selamVer(merhaba);

Extension Metotlar:

Mevcut sınıflara ek metodlar eklemek için extension kullanılır.


dart

Copy code

extension StringUzantisi on String {

  String tersCevir() => split('').reversed.join();

}


print('merhaba'.tersCevir()); // 'abahrem'


Mixin'ler:

Dart'ta, mixin anahtar kelimesi ile sınıflara tekrar kullanılabilir özellikler ve metodlar eklemek mümkündür. Bu, çoklu kalıtımın bazı avantajlarını sağlar.



mixin Canli {

  void nefesAl() {

    print("Nefes alıyorum");

  }

}


class Insan with Canli {

  // Insan sınıfı Canli mixin'inden gelen özelliklere sahip olur

}


var ali = Insan();

ali.nefesAl();  // "Nefes alıyorum" çıktısını verir

Enum'lar ve Anlamlı İsimlendirme:

Dart'ta enum yapısı, sabit bir değerler kümesi için kullanılır. Bu, kodun okunabilirliğini artırır.



enum Renk { Kirmizi, Yesil, Mavi }


void renkYazdir(Renk renk) {

  print(renk);

}


renkYazdir(Renk.Kirmizi);  // Kirmizi

Null Safety:

Dart, null safety özelliği ile null olabilecek ve olmayacak değişkenleri ayırt eder. Bu, hataları azaltır ve programların daha güvenli olmasını sağlar.



int? belkiSayi;  // Null olabilir

int sayi = 5;    // Null olamaz


print(belkiSayi ?? 0);  // Null ise 0 yazdır

Koleksiyon İfadeleri:

Koleksiyonlar için if-else ve for döngüleri içerebilir.



var meyveler = ['elma', 'armut', 'muz'];

var sebzeler = ['domates', 'biber', 'patlıcan'];


var yiyecekler = [

  'su',

  ...meyveler,

  if (true) 'kek',

  for (var sebze in sebzeler) sebze.toUpperCase()

];

Cascade Notation (..):

Bu notasyon, aynı nesne üzerinde ardışık işlemler yapmayı kolaylaştırır.



class Araba {

  String renk;

  int yil;

  void calistir() => print("Araba çalıştı");

  void durdur() => print("Araba durdu");

}


Araba()

  ..renk = 'Kırmızı'

  ..yil = 2020

  ..calistir()

  ..durdur();

Genel Programlama (Generics):

Genel türler, koleksiyonlar ve fonksiyonlar için tür güvenliği sağlar.



List<T> listeOlustur<T>(T deger, int uzunluk) {

  return List<T>.filled(uzunluk, deger);

}


var sayilar = listeOlustur<int>(10, 3);  // [10, 10, 10]

var kelimeler = listeOlustur<String>('merhaba', 2);  // ['merhab

a', 'merhaba']

```


Kütüphaneler ve İçe Aktarmalar:

Dart, kodu modüler hale getiren ve yeniden kullanılabilirlik sağlayan kütüphane sistemi sunar. Kendi kütüphanelerinizi oluşturabilir veya başkalarının yazdığı kütüphaneleri projelerinize ekleyebilirsiniz.


// dosya: matematik.dart

library matematik;


int topla(int a, int b) => a + b;

int carp(int a, int b) => a * b;


// başka bir dosyada

import 'matematik.dart';


void main() {

  print(topla(3, 4));  // 7

  print(carp(3, 4));  // 12

}

Annotasyonlar ve Meta-Programlama:

Dart, kodunuzu işaretlemek ve ek bilgiler sağlamak için annotasyonları (annotations) destekler. Bu özellik, frameworkler ve kütüphaneler tarafından sıkça kullanılır.


class BenimSinifim {

  @override

  String toString() => 'BenimSinifim örneği';

}

Event Handling ve Stream'ler:

Dart'ta asenkron olayların işlenmesi için Stream sınıfı kullanılır. Bu, web ve mobil uygulamalarda kullanıcı etkileşimlerini ve diğer asenkron olayları işlemek için oldukça yararlıdır.


Stream<int> sayiAkisi = Stream.periodic(Duration(seconds: 1), (x) => x);


void main() {

  sayiAkisi.listen((sayi) {

    print(sayi); // Her saniye 0'dan başlayarak artan sayıları yazdırır

  });

}

Dart'ı öğrenirken, bu ve benzeri gelişmiş konulara hakim olmak, özellikle Flutter ile karmaşık uygulamalar geliştirirken faydalı olacaktır. Dart'ın sunduğu bu zengin özellikler, geliştiricilere güçlü ve esnek bir programlama platformu sunar. Dart ve Flutter'ın güncel gelişmelerini takip etmek, topluluk forumlarına katılmak ve pratik yapmak bu öğrenme sürecinde size yardımcı olacaktır.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال