skip to Main Content

I have a list of map that looks like:

List<dynamic> lists = [
{"name":"SpiderMan",
 "genere":"superhero"
},
{"name":"Batman",
 "genere":"superhero"
},
{"name":"Notebook",
 "genere":"romance"
},
{"name":"Titanic",
 "genere":"romance"
}
]

And what I want to do is that I want to organize the movies into one map that has same genere, the output that I want is like:

[{romance:[  
  {"name":"Notebook",
     "genere":"romance"
    },
    {"name":"Titanic",
     "genere":"romance"
    }
]},superhero:[
 {
"name":"Notebook",
     "genere":"romance"
    },
    {"name":"Titanic",
     "genere":"romance"
    }
]]

2

Answers


  1. Use This Model

    import 'dart:convert';
    
    SubTypeM subTypeMFromJson(String str) => SubTypeM.fromJson(json.decode(str));
    
    String subTypeMToJson(SubTypeM data) => json.encode(data.toJson());
    
    class SubTypeM {
        SubTypeM({
            required this.romance,
            required this.superhero,
        });
    
        List<Romance> romance;
        List<Romance> superhero;
    
        factory SubTypeM.fromJson(Map<String, dynamic> json) => SubTypeM(
            romance: List<Romance>.from(json["romance"].map((x) => Romance.fromJson(x))),
            superhero: List<Romance>.from(json["superhero"].map((x) => Romance.fromJson(x))),
        );
    
        Map<String, dynamic> toJson() => {
            "romance": List<dynamic>.from(romance.map((x) => x.toJson())),
            "superhero": List<dynamic>.from(superhero.map((x) => x.toJson())),
        };
    }
    
    class Romance {
        Romance({
            required this.name,
            required this.genere,
        });
    
        String name;
        String genere;
    
        factory Romance.fromJson(Map<String, dynamic> json) => Romance(
            name: json["name"],
            genere: json["genere"],
        );
    
        Map<String, dynamic> toJson() => {
            "name": name,
            "genere": genere,
        };
    }
    

    You can get both together . To store data

    String subTypeMToJson(SubTypeM data) => json.encode(data.toJson());
    

    to get data list

    SubTypeM subTypeMFromJson(String str) => SubTypeM.fromJson(json.decode(str));
    
    Login or Signup to reply.
  2. Using groupBy in import

    "package:collection/collection.dart";
    

    code will be
    ”’

    var lists = [
      {"name": "SpiderMan", "genere": "superhero"},
      {"name": "Batman", "genere": "superhero"},
      {"name": "Notebook", "genere": "romance"},
      {"name": "Titanic", "genere": "romance"}
    ];
    
    final newMap = groupBy(lists, (Map obj) => obj['genere']);
    
    print(newMap);
    
    /// it will return
    /* 
    {superhero: [{name: SpiderMan, genere: superhero}, {name: Batman, genere: superhero}], 
     romance: [{name: Notebook, genere: romance}, {name: Titanic, genere: romance}]}
     */
    

    ”’

    enter image description here

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search