Dart : 목록 매핑 (list.map)


답변:


140

당신이 사용할 수있는

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

예:

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

15
왜 우리가 필요 toList합니까?
onmyway133

2
@ onmyway133 질문 목록 매핑에 대해 때문에
AbdulMomen عبدالمؤمن

4
@AbdulMomen عبدالمؤمن 질문은 왜 처음부터 필요한지입니다. Swift에서 Array <E>를 매핑하면 새로운 결과 유형의 Array <R>이 반환됩니다. Dart List <E> 매핑 결과가 아직 목록이 아닌 이유는 무엇입니까?
Michael Long

14
@MichaelLong은 여기 Dart에서 대신에 map<T>반환합니다 Iterable<T>.List<T>
AbdulMomen عبدالمؤمن

43
Iterablemap()반환 게으른입니다. 누군가가 실제로 그것을 반복 할 때만 아직 평가되지 않았습니다. toList()실제 목록을 반환하는 것 외에도을 호출 하면이 평가가 강제 실행됩니다.
Gábor

19

나는 플러터가 처음입니다. 이런 식으로도 달성 할 수 있다는 것을 알았습니다.

 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
당신의 함수는 {}한 줄 함수로 선언 되었기 때문입니다
Mehrdad Shokri

1

예, 당신도 이렇게 할 수 있습니다

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.