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.