我一直在调查我的Flutter应用程序的JSON解析,并且有一个关于我无法解决的工厂构造函数的问题.我试图理解使用工厂构造函数和普通构造函数的优点.例如,我看到很多JSON解析示例创建了一个带有JSON构造函数的模型类,如下所示:
class Student{
String studentId;
String studentName;
int studentScores;
Student({
this.studentId,
this.studentName,
this.studentScores
});
factory Student.fromJson(Map<String, dynamic> parsedJson){
return Student(
studentId: parsedJson['id'],
studentName : parsedJson['name'],
studentScores : parsedJson ['score']
);
}
}
Run Code Online (Sandbox Code Playgroud)
我也看到过相同数量的例子,它们并没有将构造函数声明为工厂.两种类型的classname.fromJSON构造函数都是从JSON数据创建一个对象,因此将构造函数声明为工厂还是在这里使用工厂是多余的?
Gün*_*uer 20
普通构造函数始终返回当前类的新实例(构造函数抛出异常时除外).
工厂构造函数与静态方法非常相似,但与之不同
new但现在new变得不那么相关,因为它是可选的.: super()) 因此可以使用工厂构造函数
在您的示例中此代码
studentId: parsedJson['id'],
studentName : parsedJson['name'],
studentScores : parsedJson ['score']
Run Code Online (Sandbox Code Playgroud)
可以移动到普通构造函数的主体,因为不需要final初始化任何字段.
null。(但是,有些人不喜欢null从工厂构造函数中返回。)new。(但使用new现在气馁。)async。(工厂构造函数必须返回其类的类型,因此它不能返回Future。)| 归档时间: |
|
| 查看次数: |
8075 次 |
| 最近记录: |