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']);
但是想象一下有很多很多参数,这样做会很痛苦。
解决方案
通过为此创建一个构造函数:
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'];
}
如果您愿意,也可以在构造函数主体中进行分配,如果您有更多字段,则更清楚。
推荐阅读
- python - 如何在 np.float64 中找到任意数字的下一个或上一个数字?
- php - 将html代码转换为纯文本时出现问题
- android - React-native run-android 命令不起作用
- reactjs - 两个 div 之间的反应弹簧过渡中的生涩运动
- salesforce - 如何在 Salesforce 中创建一个自动填充任何依赖对象的对象?
- vim - 使用 Vlime 将 Vim 连接到 SBCL 时出现“SB-KERNEL:UNKNOWN-PARSE-TYPE”
- hibernate - 有没有办法让悲观和乐观锁定在 Hibernate 中工作
- linux - 如何创建一致的 .config 文件来编译 Linux 内核?
- javascript - Promise.all 返回 [[PromiseValue]] 但我需要所有返回值的数组
- html - 当文件位于目录中的目录中时,Github 页面下载文件失败并显示“无文件”,但仅在一个目录中时成功