Map to Class in Dart

后端 未结 4 1934
北海茫月
北海茫月 2021-01-11 17:44

Is there a standard way to convert a map to an object of a user defined class?

In Python you can do MyClass(**map) which basically unwraps the map into named argumen

4条回答
  •  野趣味
    野趣味 (楼主)
    2021-01-11 18:29

    You can also achieve this manually by using named constructor like this simple example:

    import 'package:flutter/material.dart';
    
    Map myMap = {"Users": [
    
      {"Name": "Mark", "Email": "mark@email"},
    
    
      {"Name": "Rick", "Email": "rick@email"},
    ]
    };
    
    class MyData {
      String name;
      String email;
    
      MyData.fromJson(Map json){
        this.name = json["Name"];
        this.email = json ["Email"];
      }
    }
    
    class UserList extends StatelessWidget {
      MyData data;
    
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
            appBar: new AppBar(title: new Text("User List"),),
            body:
            new ListView.builder(
                shrinkWrap: true,
                itemCount: myMap["Users"].length,
                itemBuilder: (BuildContext context, int index) {
                  data = new MyData.fromJson(myMap["Users"][index]);
                  return new Text("${data.name} ${data.email}");
                })
        );
      }
    }
    

提交回复
热议问题