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.