Flutter:如何使用模型将类型 Map 分配给变量?

时间:2021-04-20 20:50:00

标签: flutter dart

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 类型分配给变量?

1 个答案:

答案 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);
}