Json序列化
官方荐用json_serializable插件
项目使用了built_value
- 优点:
- 不可变值类型
- EnumClass, 操作类似enum
- json序列化
- 参考链接:
- 自己在android studio中新建了一个live template, 输入
built_value
即可快速生成model class模版:// 模版内容 // 配置在 perference -> Editor -> Live Templates -> flutter 新建命名为 built_value // Template Text 填入以下代码 // edit variables -> CLASS_NAME_CAMELCASE对应expression为 camelCase(CLASS_NAME) abstract class $CLASS_NAME$ implements Built<$CLASS_NAME$, $CLASS_NAME$Builder> { static Serializer<$CLASS_NAME$> get serializer => _$$$CLASS_NAME_CAMELCASS$Serializer; String toJson() { return json.encode(serializers.serializeWith($CLASS_NAME$.serializer, this)); } factory $CLASS_NAME$.fromJson(String jsonString) { return serializers.deserializeWith( $CLASS_NAME$.serializer, json.decode(jsonString), ); } Map<String, dynamic> toMap() { return serializers.serializeWith($CLASS_NAME$.serializer, this); } factory $CLASS_NAME$.fromMap(Map<String, dynamic> map) { return serializers.deserializeWith( $CLASS_NAME$.serializer, map, ); } $CLASS_NAME$._(); factory $CLASS_NAME$([void Function($CLASS_NAME$Builder) updates]) = _$$$CLASS_NAME$; }
- 备注:
@nullable // 表示该字段可空 @BuiltValueField(wireName: 'updated_at') // 解析的json中字段对应蛇形格式,映射为驼峰 String get updatedAt;
- model写完后生成*.g.dart的命令:
flutter packages pub run build_runner build // 执行一次build命令 flutter packages pub run build_runner watch // 文件更改自动build flutter packages pub run build_runner watch --delete-conflicting-outputs // 删除旧文件在build
留下评论