Flutter Fetchdata Profil Page
-
herkese iyi aksamlar, profil sayfamda future methodla apiye once user token gonderip sonra profil bilgilerini cekiyorum fakat methodu build icinde tetiklemem gerekiyor. sonra oturumu kapat butonuyla tokeni silip cikis yaptiriyorum fakat tokeni sildikten sonra profil sayfasi tekrar future methodu tetikledigi ve tokeni bulamadigi icin hata aliyorum. Yardimci olursaniz sevinirim tesekkurler simdiden
-
kodları paylaşır mısın hocam ?
-
https://paste.ofcode.org/u9Z7GKFDySJkNGdw6Y8Zxh
-
Hocam kodun çok karmaşık. Anlamadım...
Anladığım kadarıyla söyleyeyim.
Hiçbir isteği build methodunda çağırmamalısın. Eğer ekran açıldığı anda tetiklemek istiyorsan. initState methodunda Future ile apiyi 1 kere çağır. Daha sonra veri gelince state güncelleyip işlemlerine devam edersin.
Build methoduna sadece ekrana çizilecek kodların yazılması gerekiyor. Aksi işlem yapman performansı mahveder ek olarak uygun da değil. Her ekranda etkileşim olduğunda apiye istek atarsan saniyede 100 tane istek atarsın...
-
Her çalıştırdığın setState() build fonksiyonunu tekrar tetikler. Api veri çekme işlemini build içinde yaparsan sürekli olarak tetiklemiş olursun.
ayrıca
Widget build(BuildContext context) { _fetchData();
_fetchData(); asekntrol olduğu için bu fonksiyonu çağırırken yine asenkron olarak çağırman gerekiyor.
Build içinde asenkron fonksiyon çalıştırmak için FutureBuilder kullanman gerekiyor. (https://flutterigniter.com/build-widget-with-async-method-call/)
Tavsiyelerim:
BLOC yapısını kullanmanı tavsiye ederim. (setState kullanmak zorunda kalmazsın)
Widget lerini ayrı dosya halinde tutman kod karşamasını ortadan kaldıracaktır. Şu an için kodların çok karışık görünüyor.