डार्ट: एक सूची मैप करना (list.map)


जवाबों:


150

आप उपयोग कर सकते हैं

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 क्योंकि सवाल एक सूची को मैप करने के बारे में है
अब्दुलमेन عبدالمؤمن

5
@AbdulMomen عبدالمنمن मेरा मानना ​​है कि सवाल यह है कि पहली जगह की आवश्यकता क्यों है। स्विफ्ट में, एक Array <E> को मैप करने से नए परिणाम प्रकार का एक Array <R> मिलता है। डार्ट सूची <ई> की सूची तैयार करने का परिणाम पहले से ही क्यों नहीं है?
माइकल लॉन्ग

16
यहाँ becaues @MichaelLong, डार्ट में, map<T>एक रिटर्न Iterable<T>एक के बजायList<T>
AbdulMomen عبدالمؤمن

46
Iterableकि map()रिटर्न आलसी है। इसका मूल्यांकन अभी तक नहीं किया गया है, जब कोई वास्तव में इसे पुनरावृत्त करता है। कॉलिंग toList(), एक वास्तविक सूची को वापस करने के अलावा, इस मूल्यांकन को बल देता है।
गैबोर

20

मैं नया नया हूँ। मैंने पाया कि कोई इसे इस तरह भी हासिल कर सकता है।

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

नोट: इसके लिए डार्ट एसडीके संस्करण की आवश्यकता है> = 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.