Flutter - Veri Geç Geldiği İçin Ekrana Basamıyor

Bu konuyu okuyanlar

berkayc

Öğrenci
Katılım
21 Mart 2020
Mesajlar
7
Reaksiyon puanı
0
Puanları
1
Yaş
22
Merhabalar,

Flutter teknolojisini kullanarak bir mobil uygulama geliştiriyorum. Bir problemim var, elimden geldiğince açıklamaya çalışacağım.
API kullanarak son eklenen haberleri JSON formatında alıyorum. Uygulamada anasayfa her ziyaret edildiğinde API'a 9 farklı sorgu gidiyordu, her biri ortalama 500 ms'den 4.5 saniye yapıyordu. Bir şekilde tek sorguya çektim ve süre 300 ms yani 0.3 saniyeye kadar düştü.

API'dan gelen veriyi anasayfada 4 farklı alanda yazdırmak istiyorum. Bütün bu alanları farklı widgetlar olarak hazırladım. İçerisine decode edilmiş json verisini alıyor. Widgetın dosyasında da gelen decode edilmiş veriyi bir diziye atıp futurebuilder ile ekrana basmaya çalışıyorum. Bu nedenle ilk olarak aşağıdaki şekilde veriyi tek seferde alıp decode ediyorum:

Kod:
dynamic sonuclariAl() async {
  var cevap =
      await baglanti.get("$website/wp-json/bc-mobile/v1/post-bilgileri");
  if (cevap.statusCode == 200) {
    final jsonresponse = json.decode(cevap.body);
    return jsonresponse;
  }
}

Buradan gelen veriyi de 4 farklı alan olduğu için aşağıdaki şekilde düzenliyorum.
Kod:
hey() async {
  response = await sonuclariAl();
  return response[0][0];
}

Widget içerisine gelen veriyi gönderiyorum.
Kod:
HomeManset(
    kategoriid: manset,
   deger: hey(),
),

Widget sayfasında aşağıdaki şekilde futurebuilder kullanarak ekrana basmaya çalışıyorum. Futurebuilder içerisinde future: testGetir(widget.deger) olarak aşağıdaki fonksiyonu çağırıyorum:
Kod:
Future<List<PostGetir>> testGetir(dynamic jsonresponse) async {
  // dönüş tipi liste ve listenin tipi Post olmalı
  List<PostGetir> postlist = [];
  try {
    for (int i = 0; i < 3; i++) {
      postlist.add(PostGetir.fromJson(jsonresponse[i]));
    }
  } catch (err) {
    return postlist;
  }
  return postlist;
}

Fakat veri geç geldiği için ilk seferde futurebuilder içerisinde veri full dönüyor ve ekrana bir şey yok yazdırıyor. Ekrana bir şey yok yazdırdıktan sonra veri geliyor fakat bu sefer futurebuilder tetiklenmediği için ekrana gelen veriler yazdırılamıyor.
Desteklerinizi bekliyorum.
 

[т]σятυє

Asistan
Katılım
10 Temmuz 2017
Mesajlar
401
Reaksiyon puanı
278
Puanları
63
Yeni veri gelene kadar false veya null değeri döndürebilirsin?
 

xyz1234

Müdavim
Katılım
6 Aralık 2008
Mesajlar
2,587
Reaksiyon puanı
13
Puanları
38
1. veriyi göstereceğiz widgetleri FutureBuilder içine alabilirsin.
2. veriyi göstereceğin widgetleri ValueListenebleBuilder içine alıp. servisten gelen veriyi bir ValueNotifier değişkenine atayabilirsin.
3. fonksiyonlarında veri geldikten sonra setState((){}) methodunu çağırabilirsin.
4. Streambuilder kullanabilirsin.

flutter bilgi düzeyinizi bilmediğim için ve projenizi tam olarak göremediğim için bu kadar yardımcı olabilirim ancak.
 

Son mesajlar

Üst