Mam listę String
s np.
var moviesTitles = ['Inception', 'Heat', 'Spider Man'];
i chciałem użyć moviesTitles.map
do konwersji ich na listę Tab
Widget
sw Flutter.
Mam listę String
s np.
var moviesTitles = ['Inception', 'Heat', 'Spider Man'];
i chciałem użyć moviesTitles.map
do konwersji ich na listę Tab
Widget
sw Flutter.
Odpowiedzi:
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()
,
),
map<T>
zwraca Iterable<T>
zamiast aList<T>
Iterable
co 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ę.
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
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()
,
),
{}
tej kwestii jest jedna linia funkcja
toList
?