dio ile REST Üzerinden Fiyat Çekme
İlk açılışta güncel fiyatı hızlıca göstermek için tek seferlik bir REST isteği idealdir. pubspec.yaml dosyanıza dio paketini ekledikten sonra, API anahtarınızı varsayılan başlıklara tanımlayarak her isteğe otomatik iliştirebilirsiniz: `final dio = Dio(BaseOptions(headers: {'Authorization': 'Bearer $apiKey'}));`. Ardından `final res = await dio.get('https://altinapi.hasfiyat.com/v1/prices/gram-altin');` çağrısıyla gram altın alış ve satış değerlerini alırsınız.
dio'nun yanıtı otomatik olarak Map yapısına çözmesi, JSON ayrıştırmayı kolaylaştırır. Yine de tip güvenliği için gelen veriyi bir model sınıfına (örneğin Fiyat.fromJson) dönüştürmek en iyi pratiktir; böylece alanlara nokta gösterimiyle güvenle erişir ve olası null değerleri tek yerde yönetirsiniz.
Zaman aşımı, yeniden deneme ve merkezî hata yönetimi için dio'nun Interceptor mekanizması çok kullanışlıdır. Bir interceptor içinde 401 yanıtlarını yakalayıp anahtar sorununu loglayabilir, bağlantı hatalarında kullanıcıya sade bir uyarı gösterebilirsiniz. Bu katman, uygulamanın farklı ekranlarında ağ mantığını tekrarlamanızı önler.
socket_io_client ile Canlı WebSocket Akışı
Fiyatların anlık değişimini kullanıcıya yansıtmak için WebSocket bağlantısı REST sorgularından çok daha verimlidir; sürekli sorgu (polling) yapmak yerine sunucu değişiklik oldukça size veri gönderir. socket_io_client paketiyle bağlantıyı `IO.io('https://altinapi.hasfiyat.com', IO.OptionBuilder().setTransports(['websocket']).setExtraHeaders({'Authorization': 'Bearer $apiKey'}).build());` şeklinde kurarsınız.
Bağlantı kurulduktan sonra ilgilendiğiniz sembollere abone olur ve gelen olayları dinlersiniz: `socket.on('price', (data) { /* ekranı güncelle */ });`. Her fiyat güncellemesi geldiğinde durumu (state) tazeleyerek arayüzü yenilersiniz. Canlı akış sayesinde gram altın, çeyrek, ons XAU veya USD/TRY paritesi gibi değerler kullanıcı ekranında adeta canlı bir pano gibi akar.
Mobil uygulamalarda bağlantının uygulama arka plana alındığında kesilip öne geldiğinde yeniden kurulması gerekir. socket_io_client'ın onDisconnect ve onReconnect olaylarını dinleyerek bu yaşam döngüsünü yönetin. AppLifecycleState değişimlerini takip edip soketi uygun anda açıp kapatmak, hem pil tüketimini azaltır hem de gereksiz veri trafiğini önler.
Durum Yönetimi ve Üretim İpuçları
Canlı akışı arayüze bağlamak için Provider, Riverpod veya Bloc gibi bir durum yönetimi çözümü kullanmanızı öneririz. Soketten gelen her güncellemeyi bir Stream veya notifier üzerinden yayınlar, widget ağacında yalnızca fiyatı gösteren küçük parçaları yeniden çizersiniz. Böylece tüm ekranı değil, yalnızca değişen bileşeni güncelleyerek akıcı bir deneyim sağlarsınız.
API anahtarınızı asla doğrudan Dart kaynak koduna gömmeyin; derleme sırasında --dart-define ile enjekte edin veya güvenli bir depolama katmanından okuyun. Yayınlanan mobil paketler tersine mühendislikle açılabildiğinden, mümkünse yetkilendirmeyi kendi backend'iniz üzerinden proxy'leyerek anahtarı istemciden tamamen uzak tutmak en güvenli yaklaşımdır.
Hasfiyat, Flutter ekipleri için hem REST hem de Socket.IO tabanlı WebSocket arayüzünü tek bir Authorization header'ıyla sunar. 67'den fazla sembol, 14 kaynaklı otomatik failover ve milisaniye gecikmeli akışla mobil uygulamanız ilk ekrandan itibaren güvenilir ve güncel altın ile döviz verisi gösterir.
Sık sorulan sorular
Flutter uygulamasında Hasfiyat altın fiyatını nasıl gösteririm?
Dart'ın http paketiyle Authorization header ekleyerek GET isteği atar, dönen JSON'u jsonDecode ile Map'e çevirirsiniz. Alış-satış değerlerini bir FutureBuilder içinde widget'a bağlayarak ekranda gösterirsiniz. Canlı güncelleme için Socket.IO istemcisiyle StreamBuilder kullanabilirsiniz.
Dart'ta API anahtarını isteğe nasıl eklerim?
http.get(url, headers: {'Authorization': apiKey}) şeklinde headers parametresine anahtarınızı yazarsınız. Anahtarı koda gömmek yerine güvenli depolama ya da ortam değişkeninden okumanız önerilir. Eksik anahtarda API 401 döner.
Flutter'da canlı altın fiyatı akışını StreamBuilder ile nasıl bağlarım?
socket_io_client paketiyle bağlantı kurup fiyat güncelleme olayını bir Stream'e aktarırsınız. StreamBuilder bu Stream'i dinleyerek her yeni fiyatta widget'ı otomatik yeniler. Böylece kullanıcı saniye altı gecikmeyle güncel değeri görür.
Dart'ta JSON altın yanıtını model sınıfına nasıl dönüştürürüm?
jsonDecode ile Map elde edip fromJson adında bir factory constructor'a geçirerek model nesnesi oluşturursunuz. Bu yaklaşım alan erişimini tip güvenli hale getirir. json_serializable paketiyle bu dönüşüm kodunu otomatik de üretebilirsiniz.
Flutter uygulamamda döviz kuru API isteği başarısız olursa nasıl ele alırım?
http isteğini try-catch içine alıp statusCode değerini kontrol ederek 200 dışındaki durumları yönetirsiniz. Kullanıcıya hata mesajı gösterip yeniden deneme butonu sunabilirsiniz. Çoklu-kaynak failover sayesinde geçici kaynak sorunları API tarafında çoğunlukla otomatik giderilir.
Dart'ta http paketi yerine Dio kullanabilir miyim?
Evet, Dio ile options.headers üzerinden Authorization anahtarını ekleyerek istek atabilir, interceptor'larla hata ve yeniden deneme mantığını merkezileştirebilirsiniz. Dio, timeout ve iptal token'ı gibi gelişmiş özellikler sunar. Küçük uygulamalarda standart http paketi de yeterlidir.
Flutter'da 67 sembol arasından sadece ceyrek ve gram altını nasıl çekerim?
Çoklu sembol destekleyen uç noktaya çeyrek altın ve gram altın sembollerini iletip dönen JSON dizisini filtreleyerek gösterirsiniz. Tek istekte ihtiyaç duyduğunuz sembolleri alarak veri trafiğini azaltırsınız. Alış ve satış değerleri her sembol için ayrı gelir.
Canlı altın & döviz verisine hemen bağlanın
Dakikalar içinde REST veya Socket.IO ile gerçek zamanlı fiyat akışına başlayın.

