Dart: mapeo de una lista (list.map)


Respuestas:


140

puedes usar

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

ejemplo:

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

14
¿Por qué necesitamos toList?
— onmyway133

2
@ onmyway133 porque la pregunta es sobre el mapeo de una lista
— AbdulMomen عبدالمؤمن

4
@AbdulMomen عبدالمؤمن Creo que la pregunta es por qué es necesario en primer lugar. En Swift, el mapeo de un Array <E> devuelve un Array <R> del nuevo tipo de resultado. ¿Por qué el resultado de mapear una lista de dardos <E> no es ya una lista?
— Michael Long

14
@MichaelLong porque aquí, en Dart, map<T>devuelve un en Iterable<T>lugar de unList<T>
— AbdulMomen عبدالمؤمن

42
El Iterableque map()vuelve es perezoso. Aún no se evalúa, solo cuando alguien realmente lo itera. Llamar toList(), además de devolver una lista real, fuerza esta evaluación.
— Gábor

19

Soy nuevo en aletear. Descubrí que también se puede lograr de esta manera.

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

Nota: Requiere que la versión de dart sdk sea> = 2.3.0, ver aquí


3

Intento este mismo método, pero con una lista diferente con más valores en el mapa de funciones. Mi problema fue olvidar una declaración de devolución. Esto es muy importante :)

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

1
Es porque su función se declara con {}la pregunta es una función de línea
— Mehrdad Shokri

1

Sí, también puedes hacerlo de esta manera

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

Esta trabajando bien para mi

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.