static TodoEntity fromJson(Map<String, Object> json) {
return TodoEntity(
json['task'] as String,
json['id'] as String,
json['note'] as String,
json['complete'] as bool,
);
}
static TodoEntity fromSnapshot(DocumentSnapshot snap) {
return TodoEntity(
snap.data()['task'],
snap.id,
snap.data()['note'],
snap.data()['complete'],
);
}
我正在学习"从json "方法和
在这个例子中,为什么他们使用&;static&;?
我想知道为什么
因为fromJson
与class
相关,而不是object
(这是每个静态变量/方法的情况)
所以从名称fromJson
,你需要从你的json创建TodoEntity
对象,这意味着你还没有对象,这意味着你不能调用fromJson
,所以使用static
这里是必须的,
另一种选择是通过constructor
传递json,但使用static
必须干净和通用。
不带静态的例子:从json
创建新对象var json = {...};
TodoEntity todo = TodoEntity();
TodoEntity todo2 = todo.fromJson(json);
or
var json = {...};
TodoEntity todo = TodoEntity();
todo = todo.fromJson(json);
正如你所看到的,你总是需要一个对象(todo)来调用fromJson
但是使用静态
var json = {...};
TodoEntity todo = TodoEntity.fromJson(json);
static
意味着你可以在没有对象
实现"静态工厂方法"所需的static
关键字;生成给定类的新实例的方法的模式。
如果这些方法不是static
,则必须有TodoEntity
的实例才能调用它们。
但是它们是static
,所以不需要创建任何实例来调用它们:
TodoEntity.fromJson(jsonMap);