class User {
final String? name;
final int? age;
final Map? userAuuth;
User({this.name, this.age, this.userAuuth});
Map<String, dynamic> toMap() {
return {'name': name, 'age': age, 'userAuuth': userAuuth};
}
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
age = json[22],
userAuuth = json['userAuuth'];
Map<String, dynamic> toJson() => {
'name': name,
'age': age,
'userAuuth': userAuuth,
};
}
class ModelTest {
Map<String, dynamic> a;
aa() {
var a = User().toMap();
userAuth();
}
}
我的用户值为 'name': 'aaa'
、'age': 23
、'userAuuth': {'aa': 'bb"}
。而且,我正在尝试将此值插入到 Map<String, dynamic> a
内的 class ModelTest
。
我尝试了很多东西,我也读到了 toMap(){} 函数可以做到这一点。但是,我无法弄清楚如何将此方法应用于 a
此处。如何使用模型将 Map 类型分配给变量?
答案 0 :(得分:1)
这是满足您要求的一种解决方案。您会发现的问题是,当您创建用户时,您的地图可能为空,如果是这种情况,您将无法在地图中添加任何字段。如果您不将地图传递给至少实例一个新的空地图,我建议您在地图中始终有一个值是检查构造函数,以便您可以在插入任何值后,但我不确定您正在寻找的解决方案,所以我跟随您的课程,有可能它可以使地图为空。
class User {
final String? name;
final int? age;
final Map? userAuuth;
User({this.name, this.age, this.userAuuth});
User copyWith({
String? name,
int? age,
Map? userAuuth,
}) =>
User(
age: age ?? this.age,
name: name ?? this.name,
userAuuth: userAuuth ?? this.userAuuth,
);
Map<String, dynamic> toMap() {
return {'name': name, 'age': age, 'userAuuth': userAuuth};
}
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
age = json[22],
userAuuth = json['userAuuth'];
Map<String, dynamic> toJson() => {
'name': name,
'age': age,
'userAuuth': userAuuth,
};
}
void main() {
var a = User();
a = a.copyWith(userAuuth: <String, dynamic>{'aa': 'bb'});
a.userAuuth!['bb'] = 'aa';
print(a.userAuuth);
}