Flutter ListView Üzerindeki Sorgular
Sep 18 2020
Liste görünümlerini öğreniyorum ve aşağıdaki iki dart dosyasına sahibim, biri ListView oluşturucu ve diğeri Listview kullanıyor. Her ikisi de aynı sonucu verir. Listview kılavuzunu takip etmekteyim:https://pusher.com/tutorials/flutter-listviews
Listview ile ilgili sorularım aşağıdadır:
- Gerçek dünyada verilerin bir API'den geleceğini anlıyorum ve aşağıdaki seçeneklerden hangisinin kullanılacağını ve neden kullanılacağını bilmek istedim.
- Kap, metin gibi herhangi bir parçacığın listView içinde alt öğesi olabileceğini anlamakta haklı mıyım?
- Seçenek 1'de ListView alt öğesi bir _buildListItemsFromLocation () işlevidir. Bu iyi bir uygulama mı yoksa _buildListItemsFromLocation () kodunu ayrı bir dart dosyasına mı taşımalıyız?
Seçenek1: ListView
class LocationListView extends StatefulWidget {
@override
_LocationListViewState createState() => _LocationListViewState();
}
class _LocationListViewState extends State<LocationListView> {
List<Container> _buildListItemsFromLocation() {
int index = 0;
return locationData.map((location) {
var container = Container(
child: Row(
children: [
Container(
margin: EdgeInsets.all(10.0),
child: Image(
image: AssetImage(location.imagePath),
width: 100.0,
height: 100.0,
fit: BoxFit.cover,
),
),
Container(
child: Text(location.name),
)
],
),
);
return container;
}).toList();
}
@override
Widget build(BuildContext context) {
return ListView(
children: _buildListItemsFromLocation(),
);
}
}
Seçenek 2 - ListView.builder
class LocationList extends StatefulWidget {
@override
_LocationListState createState() => _LocationListState();
}
class _LocationListState extends State<LocationList> {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: locationData.length,
itemBuilder: (context, index) {
return Row(
children: [
Container(
margin: EdgeInsets.all(10.0),
child: Image(
image: AssetImage(locationData[index].imagePath),
width: 100.0,
height: 100.0,
fit: BoxFit.cover,
),
),
Container(
child: Text(locationData[index].name),
)
],
);
}
);
}
}
Yanıtlar
2 Souvenir Sep 18 2020 at 09:04
- Yöntem 2'yi kullanıyorum çünkü anlaşılması kolay ve yukarıdan aşağıya sırayı takip ederek kodu okumak kolay.
- Herhangi bir widget, başka bir widget'ın alt öğesi olabilir. Onları nasıl ve ne için kullandığınıza bağlı olarak.
- Birçok kişi, uygulamanın performansını etkilediği için yukarıdaki gibi bölmek yerine başka bir sınıf oluşturup sonra tekrar çağırmamız gerektiğini söylüyor. Çok sayıda ancak tek ekranda kullanılması durumunda, kendi yönteminizle aynı yöntemi kullanabilirsiniz. Cevap kusurlu olabilir, kendinize verecek hiçbir şeyiniz yok.
1 Autocrab Sep 18 2020 at 09:01
- Önceden liste boyutunu bilmiyorsanız, oluşturucu aracılığıyla oluşturun
1.1 Liste oluşturursanız ve öğe sayısının on veya on ikiden fazla olmayacağını biliyorsanız ListView, example1'den oluşturabilirsiniz .
- Herhangi bir widget içinde olabilir
ListView. Kolaylık sağlamak içinListTilebaştaki, sondaki, başlık, altyazı widget'larını içeren widget adı verilir. - tamam
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı