मैं डार्ट और स्पंदन के साथ शुरुआत कर रहा हूँ। मैंने पहले ही इसे थोड़ा लटका लिया है। लेकिन एक चीज मुझे रोक रही है। और यह मेरे दिमाग को थोड़ा भ्रमित कर रहा है।

इस सार को ध्यान में रखें https://gist.github.com/MichelDiz/9af4e74f2a8c83cdb592257678e1cf71

मुद्दा यह है कि, मुझे जेएसओएन के आधार पर विजेट बनाने की जरूरत है जो कि सार में है। यह JSON "आम" से थोड़ा अलग है (इसलिए मुझे इंटरनेट पर इसी तरह के उदाहरण नहीं मिले)। यह वस्तुओं का वृक्ष है न कि मानचित्रों का। हालांकि, मुझे गतिशील रूप से विजेट बनाने के लिए मैप करने की आवश्यकता है। और ऐसा लगता है कि कक्षा सही नहीं बैठती है। और मुझे JSON फ़ाइलों के लिए जटिल कक्षाएं बनाने का अधिक अनुभव नहीं है।

मैंने बेसिक क्लास बनाने के लिए https://app.quicktype.io/ का इस्तेमाल किया है।

तो नीचे दिया गया यह कोड मेरा अवरोधन है:

  return Center(
      child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      ...(resp.groups as List<Group>).map((group) {
        //print(group);
        return  GroupBody();
      })//.toList()
      // GroupBody(),
      // GroupBody(),
    ],
  ));

और त्रुटि

flutter: The following _CastError was thrown building StreamBuilder<StateResponse>(dirty, state:
flutter: _StreamBuilderBaseState<StateResponse, AsyncSnapshot<StateResponse>>#21e11):

यह मुख्य त्रुटि है

flutter: type '_InternalLinkedHashMap<String, Group>' is not a subtype of type 'List<dynamic>' in type cast

मैं केवल प्रत्येक 'समूह' और प्रत्येक 'शून्य' के लिए कार्डों का एक समूह बना रहा हूं। JSON में मेरे पास 6 समूह और 3 शून्य हैं। तो 6 ग्रुप कार्ड और 3 जीरो कार्ड।

बस इतना ही।

चीयर्स। और ध्यान देने के लिए धन्यवाद।

पुनश्च. इसके अलावा अगर मैं कोड काट देता हूं और सिर्फ (data.groups as List).map((group) => print(group)); डालता हूं तो भी त्रुटि होती है।

0
Michel Conrado Diz 26 अक्टूबर 2019, 07:17

1 उत्तर

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

इसके अलावा:

children: <Widget>[
      ...(resp.groups as List<Group>).map((group) {
        //print(group);
        return  GroupBody();
      })

आप ऐसा कुछ कर सकते हैं:

children: resp.groups.values.map((group) {
        //print(group);
        return  GroupBody();
      }).toList()

जहां group एक नक्शा है और आप इसे इस तरह एक्सेस कर सकते हैं:

group['members']['1']
1
Pablo Barrera 26 अक्टूबर 2019, 08:59