Dart: Zuordnung einer Liste (list.map)


Antworten:


140

Sie können verwenden

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

Beispiel:

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

14
Warum brauchen wir toList?
— onmyway133

2
@ onmyway133, weil die Frage über die Zuordnung einer Liste ist
— AbdulMomen عبدالمؤمن

4
@AbdulMomen عبدالمؤمن Ich glaube, die Frage ist, warum es überhaupt benötigt wird. In Swift gibt die Zuordnung eines Arrays <E> ein Array <R> des neuen Ergebnistyps zurück. Warum ist das Ergebnis der Zuordnung einer Dartliste <E> nicht bereits eine Liste?
— Michael Long

14
@MichaelLong, weil hier in Dart map<T>ein Iterable<T>statt einesList<T>
— AbdulMomen

42
Das Iterable, was map()zurückkommt, ist faul. Es wird noch nicht ausgewertet, nur wenn jemand es tatsächlich wiederholt. Das Aufrufen toList()erzwingt zusätzlich zur Rückgabe einer tatsächlichen Liste diese Auswertung.
— Gábor

19

Ich bin neu im Flattern. Ich fand, dass man es auch so erreichen kann.

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

Hinweis: Die dart sdk-Version muss> = 2.3.0 sein ( siehe hier)


3

Ich versuche die gleiche Methode, aber mit einer anderen Liste mit mehr Werten in der Funktionszuordnung. Mein Problem war, eine Rückgabeerklärung zu vergessen. Dies ist sehr wichtig :)

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

1
Es ist, weil Ihre Funktion mit {}der Frage deklariert ist, ist eine
— Zeilenfunktion

1

Ja, das können Sie auch so machen

 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(),

Es funktioniert gut für mich

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.