Дарт: відображення списку (list.map)


Відповіді:


151

ви можете використовувати

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

приклад:

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

19
Навіщо нам toList?
onmyway133

2
@ onmyway133, оскільки питання стосується складання списку
AbdulMomen عبدالمؤمن

5
@AbdulMomen عبدالمؤمن Я вважаю, що питання полягає в тому, навіщо це потрібно в першу чергу. У Swift зіставлення масиву <E> повертає масив <R> нового типу результату. Чому результат відображення Dart List <E> ще не є списком?
Майкл Лонг

16
@MichaelLong becaues тут, у Дарті, map<T>повертає Iterable<T>замість aList<T>
AbdulMomen عبدالمؤمن

46
Iterable хто map()повертається, ледачий. Це ще не оцінено, лише коли хтось насправді повторює його. Виклик toList(), крім повернення фактичного списку, змушує цю оцінку.
Габор,

20

Я новачок у пурханні. Я виявив, що можна досягти цього і таким чином.

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

Примітка. Для цього потрібна версія dart sdk> = 2.3.0, див. Тут


3

Я пробую цей самий метод, але з іншим списком із більшою кількістю значень на карті функцій. Моєю проблемою було забути заяву про повернення. Це дуже важливо :)

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

1
Це тому, що ваша функція оголошена з {}питанням, це одна
рядкова

2

Так, ви можете зробити це і цим способом

 List<String> listTab = new List();
 map.forEach((key, val) {
  listTab.add(val);
 });

 //your widget//
 bottom: new TabBar(
  controller: _controller,
  isScrollable: true,
  tabs: listTab
  ,
),

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.