首页 > 解决方案 > 如何从地图中构造一个具有命名参数的类?

问题描述

假设我有这个课程:

class Person {
  final int age;
  final String name;

  const Person({
    @required this.age,
    @required this.name,
  });
}

稍后,我想使用来自外部源的数据构造这个 Person 类的新实例。

数据是Map<String, dynamic> data

data由于我使用命名参数而无法直接传递给构造函数,如何构造一个新的 Person ?

我当然可以:

final p = Person(age: data['age'], name: data['name']);

但是想象一下有很多很多参数,这样做会很痛苦。

标签: dart

解决方案


通过为此创建一个构造函数:

class Person {
  final int age;
  final String name;

  const Person({
    @required this.age,
    @required this.name,
  });

   Person.fromMap(Map<String, dynamic> map) : age = map['age'], 
       name = map['name'];
}

如果您愿意,也可以在构造函数主体中进行分配,如果您有更多字段,则更清楚。


推荐阅读