मैं एक विजेट बनाना चाहता हूं जो मानचित्र पर लूप के आधार पर एकाधिक चेकबॉक्स लिस्टटाइल उत्पन्न करेगा। प्रत्येक प्रविष्टि की कुंजी एक व्यावसायिक सेवा है और इसका मान एक बूलियन मान है (जो दर्शाता है कि बॉक्स चेक किया गया है या नहीं)। ProfessionalIdentityModel के पास ProfessinalService की एक सूची है। मैं एकाधिक CheckBoxTiles बनाने के लिए मानचित्र पर पुनरावृति करना चाहता हूं। मेरे कोड की तरह दिखता है:

Widget serviceTile(ProfessionalIdentityModel professionalIdentityModel) {
Map boolServiceMap = {
  for (var service
      in professionalIdentityModel.professionalServices.services)
    service: false
};

return Column(
  children: <Widget>[
    boolServiceMap.forEach((service, boolean) {
      CheckboxListTile(
        title: Text(service.name),
        value: false,
        onChanged: (bool value) {
          setState(() {
            service[boolean] = value;
          });
        },
      );
    })
  ],
);

} मैं अपनी व्यावसायिक सेवा की सूची के आधार पर अपना नक्शा बनाना चाहता हूं। यह मेरे विजेट्स को वापस करने से पहले किया जाना चाहिए। समस्या केवल 1 CheckBoxTiles आबाद है क्योंकि मेरे मानचित्र में केवल 1 तत्व है। क्या आपको कोई समाधान मिल सकता है जहां मेरे मानचित्र में सभी तत्व हों?

क्या तुम मेरी मदद कर सकते हो? बहुत - बहुत धन्यवाद।

0
Diridou 1 अप्रैल 2020, 20:21

1 उत्तर

सबसे बढ़िया उत्तर

एक Map के पास अद्वितीय कुंजियाँ होनी चाहिए, यदि आपके सभी services का ऑब्जेक्ट समान है, तो सभी कुंजियाँ समान होंगी और अद्वितीय नहीं होंगी।

हर बार जब आप कोई प्रविष्टि जोड़ना चाहते हैं, तो नई कुंजी अंतिम कुंजी के समान होगी। जब मानचित्र को किसी अन्य कुंजी के बराबर कुंजी प्राप्त होती है, तो वे बस उस कुंजी के मान को ओवरराइड कर देते हैं और इसलिए आपके Map में केवल एक आइटम होता है।

आप जो कर रहे हैं वह कुछ ऐसा है:

Map myMap = { 'myInt': 1 };

myMap['myInt'] = 2;
myMap['myInt'] = 3;
myMap['myInt'] = 4;

अंत में myMap में केवल एक प्रविष्टि होगी: 'myInt': 4

आपकी Map काम करने का एकमात्र तरीका यह था कि आपकी सभी सेवाएं अलग-अलग वस्तुएं थीं।

इसे पहली बार में समझना मुश्किल था क्योंकि आपने अपनी सेवाओं के प्रकार और उन्हें कैसे बनाया जा रहा है, पोस्ट नहीं किया है, इसलिए मैंने मान लिया कि वे सभी अलग-अलग थे, क्योंकि आमतौर पर हम एक ही सेवा को कई बार नहीं बनाते हैं, लेकिन अलग-अलग सेवाएं जो अलग-अलग चीजें करते हैं (एकल-जिम्मेदारी सिद्धांत)।

0
Michel Feinstein 1 अप्रैल 2020, 20:49