Dart: mapowanie listy (list.map)


Odpowiedzi:


150

możesz użyć

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

przykład:

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

19
Dlaczego potrzebujemy toList?
onmyway133

2
@ onmyway133, ponieważ pytanie dotyczy mapowania listy
AbdulMomen عبدالمؤمن

5
@AbdulMomen عبدالمؤمن Myślę, że pytanie brzmi, dlaczego jest to potrzebne w pierwszej kolejności. W języku Swift mapowanie Array <E> zwraca Array <R> nowego typu wyniku. Dlaczego wynik mapowania listy rzutek <E> nie jest jeszcze listą?
Michael Long

16
@MichaelLong becaues tutaj, w Dart, map<T>zwraca Iterable<T>zamiast aList<T>
AbdulMomen عبدالمؤمن

46
To, Iterableco map()wraca, jest leniwe. Nie jest jeszcze oceniany, tylko wtedy, gdy ktoś go faktycznie iteruje. Wywołanie toList(), oprócz zwrócenia aktualnej listy, wymusza tę ocenę.
Gábor,

20

Jestem nowy w trzepotaniu. Przekonałem się, że można to również osiągnąć w ten sposób.

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

Uwaga: Wymaga wersji sdk dart> = 2.3.0, patrz tutaj


3

Próbuję tej samej metody, ale z inną listą z większą liczbą wartości w mapie funkcji. Moim problemem było zapomnienie oświadczenia o zwrocie. To jest bardzo ważne :)

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

1
To dlatego, że funkcja jest zadeklarowana w {}tej kwestii jest jedna linia funkcja
Mehrdad Shokri

2

Tak, Ty też możesz to zrobić w ten sposób

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

U mnie działa dobrze

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.