Dart: bir listeyi eşleme (list.map)


Yanıtlar:


151

kullanabilirsiniz

moviesTitles.map((title) => Tab(text: title)).toList()

misal:

    bottom: new TabBar(
      controller: _controller,
      isScrollable: true,
      tabs:
        moviesTitles.map((title) => Tab(text: title)).toList()
      ,
    ),

19
Neden ihtiyacımız var toList?
onmyway133

2
@ onmyway133, çünkü soru bir listenin haritasını
çıkarmakla

5
@AbdulMomen عبدالمؤمن Sorunun ilk etapta neden gerekli olduğuna inanıyorum. Swift'de, <E> Dizisini eşlemek, yeni sonuç türünün Array <R> değerini döndürür. Bir Dart Listesini <E> eşlemenin sonucu neden zaten bir liste değil?
Michael Long

16
@MichaelLong burada, Dart'ta , a yerine bir map<T>döndürürIterable<T>List<T>
AbdulMomen عبدالمؤمن

46
IterableO map()döner tembel. Henüz değerlendirilmemiştir, sadece birisi gerçekten yinelediğinde. toList()Gerçek bir listeyi geri döndürmenin yanı sıra, arama bu değerlendirmeyi zorlar.
Gábor

20

Flutter konusunda yeniyim. Bu şekilde de başarılabileceğini buldum.

 tabs: [
    for (var title in movieTitles) Tab(text: title)
  ]

Not: dart sdk sürümünün> = 2.3.0 olmasını gerektirir, buraya bakın


3

Aynı yöntemi deniyorum, ancak işlev haritasında daha fazla değer içeren farklı bir liste ile. Benim sorunum bir dönüş ifadesini unutmaktı. Bu çok önemli :)

 bottom: new TabBar(
      controller: _controller,
      isScrollable: true,
      tabs:
        moviesTitles.map((title) { return Tab(text: title)}).toList()
      ,
    ),

1
Bunun nedeni, işlevinizin {}soruyla bildirilmesi tek satırlık işlevdir
Mehrdad Shokri

2

Evet, bu şekilde de yapabilirsin

 List<String> listTab = new List();
 map.forEach((key, val) {
  listTab.add(val);
 });

 //your widget//
 bottom: new TabBar(
  controller: _controller,
  isScrollable: true,
  tabs: listTab
  ,
),

0
...data.map((title) { return Text(title);}).toList(),

Benim için iyi çalışıyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.