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.