在一个 App 中,数据类是必不可少。
我们需要从接口请求数据(通常为 JSON 格式),然后解析成对象,再使用它。
看看在 Flutter 中如何定义可解析的数据类。
1.定义数据类
class User {
final String name;
final String email;
User(this.name, this.email);
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
email = json['email'];
Map<String, dynamic> toJson() =>
{
'name': name,
'email': email,
};
}
复制代码
其中,你必须实现 fromJson(Map<String, dynamic> json)
和 toJson()
两个函数。
在进行数据转换时会用到它们。
2.JsonString To Object
// 解析Json
var userMap = jsonDecode(data);
var user = User.fromMap(userMap);
复制代码
在调用数据类的 fromMap()
函数前,需要先调用 jsonDecode()
将 JsonString 转换为一个 Map。
jsonDecode()
是 dart:convert
中的一个函数,因此我们需要导入 dart:convert
。
3.Object To JsonString
// 对象转Json
var userJson = jsonEncode(user);
复制代码
使用 dart:convert
中的 jsonEncode()
就可以将一个对象转换为 JsonString,它会调用数据类的 toJson()
。
4.辅助插件
从上面的例子可以看出,要定义一个复杂的数据类还是很花费精力的。
幸运的是,有人制作了插件帮助我们自动的去完成这件事。
你可以在 AndroidStudio 的 Plugin 管理器中下在这个插件。
它的名字叫:dart_json_format。
下载好插件后,重启 AndroidStudio。
然后通过 command + N (或者编辑框内右键选择 Generate) 唤出如下弹窗,选择 dart json format
。
接着会出现如下弹窗,将你的 json 数据字符串粘贴,点击确定。
很好,数据类已经生成了!
比起官方提供的 复杂方法 ,这真是太简单了!