Arkadaşlar merhaba. Flutter’a yeni başladım.Takıldığım noktalar var .Local de json dosyasından son 10 kaydı ListView.builder ile nasıl gösterebilirim. Normalde json dosyasını decode ettiğimde tüm kayıtları getiriyor.Yani son eklenen kayıt sayfada hep üste gelsin istiyorum.
Json dosyasından son eklenen 10 kaydı getirme
emrahsahan Hocam sıralamasını ona göre yapın.
Yani tersten sıralayın
- Edited
Aşağıdaki kodda JSON dosyasından tüm verileri çekiyorum ve sayfaya yazdırıyorum.Burada tersten sıralama ve son 10 kaydı nasıl alacağım? For döngüsünü children > widget ın içinde desteklemiyor?
https://drive.google.com/file/d/1AWFiv3pK00fVtmv6sr8MgMLuC-gttL2G/view?usp=sharing
emrahsahan Merhaba,
Bu şekilde gelen veriyi değiştirmek zor olur.
Çok statik kodlar yazmışsınız.
https://www.youtube.com/watch?v=Xz19GbBMC8M&t=1338s
Şu videoda daha dinamik hali var. Class yapısı kullanırsanız müdahale etmesi daha kolay olur.
Flutter dediği gibi önce JSON veriniz class yapısına çevirmelisiniz. Daha sonra onun üzerinde istediğiniz sıralamayı yapabilirsiniz. JSON yapınızı https://app.quicktype.io/ adresini kullanarak class haline getirebilirsiniz. Ben severek kullanıyorum Muhtemelen sizin yapınızdaki News bir dizi olacak. İçerisinde tarih ya da ID gibi bir field var ise sıralamayı buna göre yapabilirsiniz.
JSON dosyanızın bir örneğini gönderirseniz daha hızlı yardımcı olabiliriz.
- Edited
Foruma yeni üye oldum.Forumdaki ilgi ve iletişim dili gayet güzel.Bunun için ayrıca teşekkür ederim.
Complex bir json dosyasını parse etme ve verileri çekme olayının mantığını çözemedim. Önemli olan mantığını çözmem sonrası gelecek zaten. Localde şöyle bir json dosyası hazırladım.
https://drive.google.com/file/d/1voEo9j4nQGDWXWGAj6RidN0cCkXR2XRo/view?usp=sharing
Şimdi sorularım şunlar:
1- Bu dosyanın hiyerarşisinde bir problem var mı?
2- Dosyada tablo olarak düşünürsek News, Users, Gallery gibi ayrı bölümler oluşturmak istiyorum.Bunlardan ilki News.
Bu News bölümünü nasıl parse edeceğim (listeye dönüştüreceğim)?Habere ait photos ve comments bölümü de haberin içinde.Bunları ayrı ayrı liste olarak almam mı gerekiyor çünkü bir habere ait birçok resim ve yorum olacak?
3-Haber detay sayfasına gitmem için haberin index numarasını mı parametre olarak göndermem gerekiyor yoksa ID mi parametre olarak göndermeliyim?
4-Bu dosyayı firebase de oluşturduk diyelim.Bu haberleri eklemek için uygulamada admin bölümümü oluşturmam gerekiyor yoksa firebase in admin paneli(ekleme, güncelleme) var mı?
Teşekkürler.
- Edited
emrahsahan
Hiyerarşi gayet doğru aslında ama tablo yapısı olarak News, Photos ve Comments olarak 3 adet tablon olmalı. Photos ve Comments tablolarında NewID olarak bir alan olmalı ki News tablosuna bu tabloları bağlayabilmelisiniz. https://app.quicktype.io?share=5×9mBZDooeADS6F2KKdD linkindeki Copy Code butonunu tıklayıp HaberlerYapi.dart dosyasına yapıştır. Bu senin JSON dosyanın class yapısı.
Daha sonra kendi kodunda değişiklik yapman gerek.
builder :(context,snapshot){
final haberlerYapi = haberlerYapiFromJson(snapshot.data);
List<News> sirali=haberlerYapi.News.sort((a,b)=>b.ID.compareTo(a.ID));
return ListView.builder(
itemCount: sirali.News.length,
itemBuilder:(context,index){
return Card(
child:ListTile(
title: Text(sirali.News[index].title)
)
);
}
);
}
Editör kullanmadan direkt buradan yazdım. Bazı yerlerde küçük hatalar olabilir
- Edited
cakaltepe Teşekkür ederim.Fotoğrafları ve Yorumları ben haberin içine gömmüştüm.Ayrı bir tablo olarak değiştireyim News ID vererek.Peki Firebasedeki bu yapıya yeni kayıt ekleme, düzenleme işini nasıl yapacağız?Admin panel mi yazmamız gerekiyor?
emrahsahan Firebase işini hiç bilmiyorum. Ben hep kendi Api kodlarımı yazdığım ve kendi veritabanımı kullandığım için gerek duymadım. Bir kaç gün içinde Push Notificatiıon için gireşeceğim Firebase konusuna ama bu konu sizin sorunuzun dışında tabi. Ancak internette firebase ile ilgili bir sürü yardımcı doküman bulabileceğinizi düşünüyorum.
emrahsahan Firebase’i şuana dek büyük hiçbir projemde kullanmadım(Notification hariç tabi). En büyük nedeni belirli bir yerden sonra ücretli olması.
@cakaltepe hocanın dediği gibi kendi api’mi yazdım, kendi sunucuma eriştim. Tevsiyem sizde öyle yapın.
@cakaltepe katkınız için teşekkürler.
- Edited
Teşekkürler arkadaşlar. Sqlite mi kullanıyorsunuz?
emrahsahan sqlite’ın flutter’da adı sqflite
localde kullanılır sqflite
Ben sunucuda mysql kullanıyorum
Flutter Sunucu mu kiralıyorsunuz veritabanı için digitalocean dan?
emrahsahan Herhangi bir yerde uygun fiyata sunucu alabilirsiniz.
Sunu olmasına gerek yok aslında.
Hosting’te başlangıçta işinizi görür.