您需要以某种方式序列化 Dart 对象。你可以尝试 JSON,也可以尝试重型序列化包.
自定义 Dart 类没有全自动 JSON 序列化。您将需要添加自定义 toJson 序列化器并创建某种 fromJson 构造函数。
例如如果你有一个 Person 类,你可以这样做:
import 'dart:json' as json;
class Person {
String name;
int age;
Person(this.name, this.age);
Person.fromJson(String json) {
Map data = json.parse(json);
name = data['name'];
age = data['age'];
}
Map toJson() {
return {'name': name, 'age': age};
}
}
注:fromJson
只是一个约定。您需要以某种方式调用它,没有内置机制可以获取任意 JSON 字符串并在自定义对象上调用正确的构造函数。
如上所述,序列化包重量更重,但功能更齐全。这是其文档中的示例:
// uses the serialization package
var address = new Address();
address.street = 'N 34th';
address.city = 'Seattle';
var serialization = new Serialization()
..addRuleFor(address);
Map output = serialization.write(address);
and
// uses serialization
var serialization = new Serialization()
..addRuleFor(address,
constructor: "create",
constructorFields: ["number", "street"],
fields: ["city"]);