在 Dart 中映射到类

use*_*455 11 dart flutter

是否有将地图转换为用户定义类的对象的标准方法?

在 Python 中,您可以执行 MyClass(**map) ,它基本上将映射解包为类构造函数的命名参数。

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

azi*_*iza 15

您还可以通过使用命名构造函数手动实现这一点,就像这个简单的例子:

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}");
            })
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Gün*_*uer 5

没有内置的方法。
您可以使用序列化包之一,例如