Dart Async Await ve Future Kullanımı


Dart Async Await ve Future Kullanımı

Dart programlama dili, asenkron işlemler için güçlü özellikler sunar. Özellikle Future yapısı ile async/await anahtar kelimeleri, hem performans hem de kod okunabilirliği açısından büyük kolaylık sağlar. Dart'ta asenkron işlemleri yönetmek için bu mekanizmaları iyi anlamak, modern uygulama geliştirme süreçleri için oldukça kritiktir.

Dart'ta Future Nedir?

Future, Dart'ta gelecekte tamamlanacak bir işlemi temsil eden önemli bir yapıdır. Bir Future, tipik olarak ağ isteği, dosya işlemleri veya zaman gecikmesi gibi uzun süren işlemlerde kullanılır. Future ile çalışırken, işlemin sonucu hemen elde edilmez; işlemin tamamlanmasını beklemeniz gerekir. Bu noktada then(), catchError() gibi metotlar devreye girer.

Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2));
  return 'Veri başarıyla çekildi!';
}

Async ve Await Kullanımı

async anahtar kelimesi, bir fonksiyonu asenkron hale getirir ve await kullanılarak Future tamamlanana kadar beklenir. Bu yaklaşım, kodun daha senkron ve anlaşılır görünmesini sağlar. Örnek olarak, veri çekme işlemini console'a yazdırmak için şöyle kullanabilirsiniz:

void main() async {
  print('Veri çekiliyor...');
  String sonuc = await fetchData();
  print(sonuc);
}

Future Hatalarını Yakalamak

Asenkron işlemlerde hata yönetimi önemlidir. try-catch bloklarını async fonksiyonlarda kullanarak hatayı yakalayabilirsiniz:

Future<String> fetchDataWithError() async {
  await Future.delayed(Duration(seconds: 2));
  throw Exception('Bir hata oluştu!');
}

void main() async {
  try {
    String sonuc = await fetchDataWithError();
    print(sonuc);
  } catch (e) {
    print('Hata: $e');
  }
}

Sonuç

Dart async/await ve Future kullanımı, karmaşık asenkron işlemleri basit ve yönetilebilir hale getirir. Kodun hem daha okunabilir hem de hatalara karşı dayanıklı olmasını sağlar. Modern Dart ve Flutter projelerinde performanslı ve güvenilir uygulamalar geliştirmek için bu yapıların etkin kullanımını mutlaka öğrenmelisiniz.