Install
在 pubspec.yaml中添加:
dependencies:
...
built_value: ^7.1.0
dev_dependencies:
...
build_runner: ^1.10.0
built_value_generator:^7.1.0
# 执行 pub getUsage
定义可序列化的模型:
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
part 'user_info.g.dart';
abstract class UserInfo implements Built<UserInfo,UserInfoBuilder>{
static Serializer<UserInfo> get serializer => _$userInfoSerializer;
String get phone;
String get userName;
UserInfo._();
factory UserInfo([void Function(UserInfoBuilder) updates]) = _$UserInfo;
}
library serializers;
import 'package:built_value/serializer.dart';
import 'package:flutter_app/api/result.dart';
import 'package:flutter_app/models/user_info.dart';
part 'serializer.g.dart';
@SerializersFor(const [
UserInfo,
...
])
final Serializers serializers = _$serializers;$ flutter packages pub run build_runner build会生成 UserInfoBuilder 类和_$UserInfo
主要功能
- 不可变模型。
- 序列化
- 枚举实现
解析json:
String json = '{"phone": "123231313131","userName": "userName"}';
final standardSerializers = (serializers.toBuilder()..addPlugin(new StandardJsonPlugin())).build();
final value =standardSerializers.deserializeWith(UserInfo.serializer, jsonDecode(json));序列化:
var userInfo = new UserInfo((b) => b
..userName = 'kk'
..phone = '123456');
print(jsonEncode(serializers.serialize(login)));