首页 文章

Dart Map to Class

提问于
浏览
1

是否有标准方法将 Map 转换为用户定义的类的对象 .

在python中你可以做MyClass(** map),它基本上将 Map 展开为类的构造函数的命名参数 .

任何指针/帮助将不胜感激 .

2 回答

  • 2

    没有内置方式 .
    您可以使用其中一个序列化包

  • 1

    您也可以使用named constructor手动实现此功能,如下所示:

    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}");
                })
        );
      }
    }
    

    enter image description here

相关问题