Flutter,为什么要在fromJson方法中使用"static"?


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&;?

我想知道为什么

因为fromJsonclass相关,而不是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);

最新更新