Flutter ile mobil uygulama geliştirmek isteyenlerin karşılaştığı ilk soru genellikle şudur: “Neden Dart?” Bu yazıda, Dart’ın ne olduğunu, teknik avantajlarını ve Flutter ekosistemindeki kritik rolünü detaylıca açıklayacağız.
1. Dart Nedir?
Dart, Google tarafından 2011 yılında geliştirilen, açık kaynaklı ve platformlar arası (cross-platform) bir programlama dilidir. Başlangıçta JavaScript’e alternatif olarak tasarlanmış olsa da, Flutter framework’ünün resmi dili olarak popülerlik kazanmıştır.
Dart’ın Temel Özellikleri
- Performans: AOT (Ahead-of-Time) ve JIT (Just-in-Time) derleme desteği sayesinde hızlı çalışır.
- Null Safety: Varsayılan olarak null güvenliği (
sound null safety) sunar, runtime hatalarını azaltır. - OOP Desteği: Sınıflar, kalıtım, arayüzler ve mixin’ler gibi nesne yönelimli programlama (OOP) konseptlerini destekler.
- Asenkron Programlama:
FutureveStreamyapılarıyla kolayca asenkron kod yazılabilir. - Geliştirici Dostu: Syntax olarak JavaScript, Java ve C# gibi dillere benzer, öğrenmesi kolaydır.
2. Flutter ile Dart İlişkisi
Neden Flutter, Dart Kullanıyor?
Flutter’ın Dart’ı tercih etmesinin 4 teknik nedeni:
a) JIT & AOT Derleme Desteği
- JIT (Hot Reload): Flutter’ın en sevilen özelliği olan hot reload, Dart’ın JIT derlemesi sayesinde çalışır. Kod değişiklikleri anında uygulamaya yansır.
- AOT (Yüksek Performans): Release modunda AOT derleme ile native performans sağlanır.
b) Widget Tabanlı Mimari
Dart’ın nesne yönelimli yapısı, Flutter’ın her şeyin bir widget olduğu (everything is a widget) felsefesiyle mükemmel uyumludur. Örneğin:
class MyButton extends StatelessWidget { // Dart OOP + Flutter Widget
@override
Widget build(BuildContext context) {
return ElevatedButton(onPressed: () {}, child: Text("Tıkla"));
}
}
c) Asenkron İşlemler için Ideal
Mobil uygulamalarda API çağrıları, dosya okuma/yazma gibi işlemler için Dart’ın async-await yapısı Flutter’da sorunsuz çalışır:
Future<void> fetchData() async {
final response = await http.get('https://api.example.com/data');
print(response.body);
}
d) Zengin Standart Kütüphane
Dart, collection’lar, HTTP işlemleri, dosya yönetimi gibi işler için hazır kütüphaneler sunar. Flutter bu kütüphaneleri doğrudan kullanır.
3. Dart Öğrenmek Şart Mı?
Flutter’a başlamak için Dart’ın temellerini bilmek zorunludur, ancak:
- Temel seviye (değişkenler, fonksiyonlar, kontrol yapıları) yeterlidir.
- Karmaşık Dart konseptleri (mirroring, isolates) Flutter’da nadiren kullanılır.
- Örnek: Flutter’da
List.generate()kullanmak için Dart’takiListyapısını bilmek yeter.
4. Dart vs JavaScript/TypeScript/Kotlin
| Dil | Flutter ile Uyumu | Performans | Öğrenme Kolaylığı |
|---|---|---|---|
| Dart | ✅ Native Destek | ⭐⭐⭐⭐⭐ | Kolay |
| JavaScript | ❌ (Bridge gerekir) | ⭐⭐ | Orta |
| Kotlin | ❌ (Sadece Android) | ⭐⭐⭐⭐ | Zor |
💡 Not: Flutter, Dart’ın platformlar arası yetenekleri sayesinde tek kod tabanıyla iOS, Android, Web ve Desktop’ı destekler.
5. Örnek Dart Kodu ile Flutter Entegrasyonu
Aşağıda, Dart’ın temel özelliklerinin Flutter’da nasıl kullanıldığına dair bir örnek:
Dart Kodu (Temel Fonksiyon):
// Dart'ta fonksiyon
String selamla(String isim) {
return "Merhaba, $isim!";
}
Flutter’da Kullanımı:
class SelamlaWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text(selamla("Furkan")); // Çıktı: "Merhaba, Furkan!"
}
}
Sonuç: Neden Dart + Flutter?
- Hızlı Geliştirme: Hot reload ve zengin widget kütüphanesi.
- Yüksek Performans: Native derleme (ARM, x64).
- Tek Kod, Çoklu Platform: iOS, Android, Web, Desktop.


