flutter 在 dart 中Map到类

lztngnrs  于 2023-08-07  发布在  Flutter
关注(0)|答案(4)|浏览(179)

是否有标准的方法将Map转换为用户定义类的对象?
在Python中,你可以做MyClass(**map),基本上是将Map解 Package 成类构造函数的命名参数。
任何指示/帮助将不胜感激。

pbossiut

pbossiut1#

您也可以通过使用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}");
            })
    );
  }
}

字符串


的数据

8hhllhi2

8hhllhi23#

You can use Function.apply .我做了一个gist来测试它的链接答案

bt1cpqcv

bt1cpqcv4#

这是我刚刚想到的模式,似乎一开始就起作用了。如果它坏了我会回来报告的。

class Foo {
  String bar;
  User user;

  Foo({
    required this.bar,
    required this.user,
  });

  @override
  Map toJson() => {
        'bar': bar,
        'user': user,
      };

  static Foo fromJson(Map json) {
    return Foo(bar: json['bar'], user: json['user']);
  }
}

字符串
第一个构造函数

Foo({
    required this.bar,
    required this.user,
  });


允许您使用以下语法声明示例:

Foo testFoo = Foo(bar: 'foo', user: User(name:'dummy', age: 23));


第二个功能

@override
  Map toJson() => {
        'bar': bar,
        'user': user,
      };


是一个示例方法,它允许你将类转换为大多数意图和目的都是JSON对象,尽管在Dart中,它的名称是Map<dynamic,dynamic>,或者是一个带有动态键和动态值的Map。
第三个功能

static Foo fromJson(Map json) {
    return Foo(bar: json['bar'], user: json['user']);
  }


是另一个可以作为静态方法调用的构造函数。它接受toJson示例方法返回的类型相同。这有效地允许您将数据类型序列化和反序列化到用于表示http库请求方法中的JSON对象的结构中或从这些结构中分离。
如果你有问题就告诉我。我对这个解决方案的稳定性很感兴趣。

相关问题