Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Dart中映射到类_Dart_Flutter - Fatal编程技术网

在Dart中映射到类

在Dart中映射到类,dart,flutter,Dart,Flutter,是否有标准方法将地图转换为用户定义类的对象 在Python中,您可以执行MyClass(**map),它基本上将映射展开为类的构造函数的命名参数 任何提示/帮助都将不胜感激。没有内置方式。 您可以使用其中一个序列化包,如 您也可以使用以下简单示例手动实现这一点: import 'package:flutter/material.dart'; Map myMap = {"Users": [ {"Name": "Mark", "Email": "mark@email"}, {

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

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


任何提示/帮助都将不胜感激。

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


您也可以使用以下简单示例手动实现这一点:

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

。我做了一个测试来测试链接的答案,使用这种方法,调用代码可以具有类型安全性,
street
city
字段的自动完成,以及编译时异常。如果您输入错误或将字段视为
int
s而不是
Strings
,应用程序将不会编译,而是在运行时崩溃

一个
地址.fromJson()
构造函数,用于从映射结构构造新的用户实例

一个
toJson()
方法,用于将用户实例转换为映射

class Address {
  String street;
  String city;

  Address(this.street, this.city);

  Address.fromJson(Map<String, dynamic> json)
      : street = json['street'],
        city = json['city'];

  Map<String, dynamic> toJson() =>
      {
        'citstreety': street,
        'city': city,
      };
}


List<Address>  getAddressList(){

  Map myMap = {"address": [
    {"street": "Marine Lines", "city": "Mumbai"},
    {"street": "Main Road", "city": "Delhi"},
  ]
  };

  var data = myMap["address"];
  List<Address> addressModelList = [];
  for (var u in data) {
    Address address =
    Address.fromJson(u);
    addressModelList.add(address);
  }
  return addressModelList;
}
类地址{
弦街;;
字符串城市;
地址(本街、本市);
Address.fromJson(映射json)
:street=json['street'],
city=json['city'];
映射到JSON()=>
{
“城市街”:街道,
“城市”:城市,
};
}
列表getAddressList(){
映射myMap={“地址”:[
{“街道”:“海上航线”,“城市”:“孟买”},
{“街道”:“主要道路”,“城市”:“德里”},
]
};
var data=myMap[“地址”];
List addressModelList=[];
用于(数据中的var u){
地址=
地址:fromJson(u);
addressModelList.add(地址);
}
返回地址模型列表;
}