Flutter/Dart 使 JSON Listview 中丢失的项目自动匿名?

Flutter/Dart Make Missing Item in JSON Listview Automatically Anonymous?

我在 Flutter 中有一个 Listview,它从 MySQL 数据库中获取 JSON 项。列表中的每一项都包含用户标识、用户名和头像。有时用户已被删除,因此数据库 returns 每列为“NULL”。如何自动将“userid”分配给“1”,将“username”分配给“anonymous”,将头像自动分配给“anonymous.jpg”?

这是我用于列表视图的 class;

class AccountContent {
  String? name;
  String? avatar;
  String? userid;
      
  AccountContent({this.name, this.avatar, this.userid});

  AccountContent.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    avatar = "https://mysite/avatar.jpg";
    userid = json['userid'];    
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['name'] = this.name;
    data['avatar'] = this.avatar;
    data['userid'] = this.userid;    
    return data;
  }
} 

当字段为空时,您可以使用default null check operator (??)分配默认值。

class AccountContent {
  String? name;
  String? avatar;
  String? userid;
     
  AccountContent({this.name, this.avatar, this.userid});

  AccountContent.fromJson(Map<String, dynamic> json) {
    name = json['name'] ?? "1";
    avatar = "https://mysite/avatar.jpg" ?? "anonymous.jpg";
    userid = json['userid'] ?? "anonymous";    
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['name'] = this.name;
    data['avatar'] = this.avatar;
    data['userid'] = this.userid;    
    return data;
  }
}