1-) FLUTTER - listview kullanımı vs
class Ogrenci{
int id;
String ad;
String soyad;
Ogrenci(this.id, this.ad, this.soyad);
}
List<Ogrenci> tumOgrenciler=List.generate(20, (index) => Ogrenci(index, "rambo "+index.toString(), "haber "+index.toString()));
PERFORMANSLI LİSTVİEW KULLANIMI
body: ListView.builder(
// physics: const NeverScrollableScrollPhysics(), // scroll ozellıgını kapatır
// shrinkWrap: true, // tam ekran sığdırır taşmıyorsa kullanabilirsin
itemBuilder: (BuildContext context2, int index) {
var ogrenci = tumOgrenciler[index];
return Card(
color: index % 2 ==0 ? Colors.orange.shade100 : Colors.purple.shade100,
child: ListTile(
onTap: (){
print("Tıklandı "+ogrenci.ad);
},
leading: CircleAvatar(child: Text(ogrenci.id.toString())),
title: Text(ogrenci.ad),
subtitle: Text(ogrenci.soyad),
trailing: Icon(Icons.real_estate_agent)),
);
},
itemCount: tumOgrenciler.length,
),
bir diğer örnek
body: ListView.builder(
itemBuilder: (BuildContext context2, int index) {
var ogrenci = tumOgrenciler[index];
return ListTile(
leading: CircleAvatar(child: Text(ogrenci.id.toString())),
title: Text(ogrenci.ad),
subtitle: Text(ogrenci.soyad),
trailing: Icon(Icons.real_estate_agent));
},
itemCount: tumOgrenciler.length,
),
bir diğer örnek her 2 elemandan sonra çizgi çek diyebiliriz separated nedir ? listedeki her elemandan sonra ne yapim demek
body: ListView.separated(
itemBuilder: (BuildContext context2, int index) {
var ogrenci = tumOgrenciler[index];
return Card(
color: index % 2 == 0
? Colors.orange.shade100
: Colors.purple.shade100,
child: ListTile(
onTap: () {
print("Tıklandı " + ogrenci.ad);
},
leading: CircleAvatar(child: Text(ogrenci.id.toString())),
title: Text(ogrenci.ad),
subtitle: Text(ogrenci.soyad),
trailing: Icon(Icons.real_estate_agent)),
);
},
itemCount: tumOgrenciler.length,
separatorBuilder: (context, index) {
if ((index+1) % 2 == 0) {
return Divider(
color: Colors.red,
thickness: 5,
);
}
return return SizedBox();
},
),
PERFORMANSSIZ LİSTVİEW KULLANIMI
body: Container(
child: ListView(
shrinkWrap: true,
scrollDirection: Axis.horizontal,
reverse: true,
children: tumOgrenciler
.map((ogrenci) => ListTile(
leading: Icon(Icons.add),
title: Text(ogrenci.ad),
subtitle: Text(ogrenci.soyad),
trailing: Icon(Icons.real_estate_agent)
))
.toList(),
),
),
reverse true dersen listeyi ters çevirir
ListTile sağdaki resimdeki gibi bir yapıdır ve hazırdır.
shrinkWrap = true demek içindekiler kadar yer kapla demek
scrollDirection: Axis.horizontal demek listeyi yatay yapar