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.