创建默认的 .toString() 方法
Creating a default .toString() method
我的 dart 项目中有很多 JSON 模型,我想用字符串表示。我知道我可以覆盖每个 class 的 .toString()
方法,但是多次编写基本相同的东西感觉就像很多工作。有没有一种方法可以创建混合或扩展来覆盖 toString?还是使用代码生成更好? (我找到了this package,不过好像没人维护了)
我要找的字符串表示只是所有参数的列表,例如:
@JsonSerializable()
class User {
UserOver(
this.userId,
this.name,
);
int userId;
/// The full name of the user.
String name;
factory UserOverview.fromJson(Map<String, dynamic> json) => _$UserOverviewFromJson(json);
Map<String, dynamic> toJson() => _$UserOverviewToJson(this);
}
应具有以下字符串表示形式:
User(userId: 1, name: "Name")
你在那里回答了你自己的问题,伙计。只需创建一个基地 class 并将其外包。很简单。
例如:
@JsonSerializable()
class User extends BaseModel {
User({
required this.userId,
required this.name,
});
int userId;
/// The full name of the user.
String name;
factory User.fromJson(Map<String, dynamic> json) =>
_$UserOverviewFromJson(json);
@override
Map<String, dynamic> toJson() => _$UserOverviewToJson(this);
}
创建基础模型class
abstract class BaseModel {
Map<String, dynamic> toJson();
@override
String toString() {
return toJson().toString();
}
}
不要忘记这些
User _$UserOverviewFromJson(Map<String, dynamic> json) => User(name: json['name'] as String, userId: json['userId'] as int);
Map<String, dynamic> _$UserOverviewToJson(User instance) => <String, dynamic>{
'name': instance.name,
'userId': instance.userId,
};
现在可以使用:
final cool = User(userId: 1, name: "Name");
print(cool.toString()); //{name: Name, userId: 1}
我的 dart 项目中有很多 JSON 模型,我想用字符串表示。我知道我可以覆盖每个 class 的 .toString()
方法,但是多次编写基本相同的东西感觉就像很多工作。有没有一种方法可以创建混合或扩展来覆盖 toString?还是使用代码生成更好? (我找到了this package,不过好像没人维护了)
我要找的字符串表示只是所有参数的列表,例如:
@JsonSerializable()
class User {
UserOver(
this.userId,
this.name,
);
int userId;
/// The full name of the user.
String name;
factory UserOverview.fromJson(Map<String, dynamic> json) => _$UserOverviewFromJson(json);
Map<String, dynamic> toJson() => _$UserOverviewToJson(this);
}
应具有以下字符串表示形式:
User(userId: 1, name: "Name")
你在那里回答了你自己的问题,伙计。只需创建一个基地 class 并将其外包。很简单。
例如:
@JsonSerializable()
class User extends BaseModel {
User({
required this.userId,
required this.name,
});
int userId;
/// The full name of the user.
String name;
factory User.fromJson(Map<String, dynamic> json) =>
_$UserOverviewFromJson(json);
@override
Map<String, dynamic> toJson() => _$UserOverviewToJson(this);
}
创建基础模型class
abstract class BaseModel {
Map<String, dynamic> toJson();
@override
String toString() {
return toJson().toString();
}
}
不要忘记这些
User _$UserOverviewFromJson(Map<String, dynamic> json) => User(name: json['name'] as String, userId: json['userId'] as int);
Map<String, dynamic> _$UserOverviewToJson(User instance) => <String, dynamic>{
'name': instance.name,
'userId': instance.userId,
};
现在可以使用:
final cool = User(userId: 1, name: "Name");
print(cool.toString()); //{name: Name, userId: 1}