如何从地图构造带有命名参数的类?

时间:2019-02-03 19:46:48

标签: dart

让我说我上了这个课:

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']);

但是想像一下,有很多参数很麻烦。

1 个答案:

答案 0 :(得分:1)

为此创建一个构造函数:

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'];
}

如果愿意,还可以在构造函数主体中进行赋值,如果您有更多字段,则可以更清楚地说明。