Kueri di Flutter ListView
Sep 18 2020
Saya belajar tentang tampilan daftar dan saya memiliki dua file panah di bawah ini, satu menggunakan pembuat ListView dan yang lainnya Listview. Keduanya menghasilkan hasil yang sama. Saya telah mengikuti panduan listview:https://pusher.com/tutorials/flutter-listviews
Di bawah ini adalah pertanyaan saya di listview:
- Saya mengerti di dunia nyata data akan berasal dari API dan ingin tahu opsi mana di bawah ini yang akan digunakan dan mengapa?
- Apakah saya benar untuk memahami bahwa widget apa pun seperti container, teks dapat menjadi turunan dari dalam listView?
- Dalam opsi 1, anak ListView adalah fungsi _buildListItemsFromLocation (). Apakah ini praktik yang baik atau haruskah kita memindahkan kode _buildListItemsFromLocation () ke file dart terpisah?
Option1: 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(),
);
}
}
Opsi 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),
)
],
);
}
);
}
}
Jawaban
2 Souvenir Sep 18 2020 at 09:04
- Saya menggunakan cara 2 karena mudah dipahami dan mengikuti urutan dari atas ke bawah sehingga mudah untuk membaca kodenya.
- Widget apa pun bisa menjadi turunan dari widget lain. Tergantung pada bagaimana dan untuk apa Anda menggunakannya.
- Banyak orang mengatakan bahwa kita harus membuat kelas lain dan kemudian memanggilnya lagi daripada memisahkannya seperti di atas karena hal itu mempengaruhi kinerja aplikasi. Jika menggunakan banyak tetapi hanya dalam satu layar, Anda dapat menggunakan metode yang sama seperti milik Anda. Jawabannya mungkin salah, tidak ada yang bisa diberikan kepada diri Anda sendiri.
1 Autocrab Sep 18 2020 at 09:01
- Jika Anda tidak tahu terlebih dahulu ukuran daftar, buatlah melalui pembuat
1.1 Jika Anda membuat daftar dan mengetahui bahwa jumlah elemen tidak akan lebih dari sepuluh atau dua belas, Anda dapat membuat ListViewdari example1
- Widget apa pun bisa masuk
ListView. Untuk kenyamanan ada widget bernamaListTile, yang berisi widget leading, trailing, title, subtitle - tidak apa-apa
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'