首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将地图列表转换为Dart对象

将地图列表转换为Dart对象
EN

Stack Overflow用户
提问于 2022-03-18 19:04:02
回答 2查看 80关注 0票数 0

我在火场有一张地图项目的清单。像这样

代码语言:javascript
复制
{
  "0": [
    {
      "score": 4.5,
      "review": "The pizza was amazing!"
    },
    {
      "score": 5.0,
      "review": "Very friendly staff, excellent service!"
    }
  ],
"1": [
    {
      "score": 4.5,
      "review": "The pizza was amazing!"
    },
    {
      "score": 5.0,
      "review": "Very friendly staff, excellent service!"
    }
  ]
}

我不能把它正确地转换成飞镖.这只是一个例子,我的数据是不同的--我尝试过

代码语言:javascript
复制
  final String uid;
  final String name;
  final String email;
  final bool isAdmin;
  final String easypaisa;
  final String jazzCash;
  final String bankAccount;
  final String phoneNumber;
  final String profileImage;
  final List<String>? isFavorite;
  final List<ListOfPackages> activatedPackages;

  UserModel({
    this.uid = '',
    this.name = '',
    this.email = '',
    this.isAdmin = false,
    this.easypaisa = '',
    this.jazzCash = '',
    this.bankAccount = '',
    this.phoneNumber = '',
    this.profileImage = '',
    final List<String>? isFavorite,
    final List<ListOfPackages>? activatedPackages,
  })  : isFavorite = isFavorite ?? [],
        activatedPackages = activatedPackages ?? [];
}


class ListOfPackages {
  final bool acceptedPackage;
  final String packageId;
  final String packageTime;
  final String proofImage;
  final String uid;
  final String username;

  ListOfPackages(
      {this.acceptedPackage = false,
      this.packageId = '',
      this.packageTime = '',
      this.proofImage = '',
      this.uid = '',
      this.username = ''});
}

在这里,我将从防火墙到UserModel的数据进行映射

代码语言:javascript
复制
    return UserModel(
        name: doc.get("name"),
        email: doc.get('email'),
        isAdmin: doc.get('isAdmin'),
        easypaisa: doc.get('easypaisa'),
        jazzCash: doc.get('jazzCash'),
        bankAccount: doc.get('bankAccount'),
        phoneNumber: doc.get('phoneNumber'),
        profileImage: doc.get('profilePic'),
        isFavorite: List.from(doc.data().toString().contains('favoritePackages')
            ? doc.get('favoritePackages')
            : []),
        activatedPackages: List.from(
            doc.data().toString().contains('activatedPackages')
                ? doc.get('activatedPackages')
                : []),
        uid: doc.get('uid') ?? '');
  }

有了这个,我得到了这个错误,Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'ListOfPackages',谁能引导我正确的方式来转换这些?事实上,大部分的教程都是用FactoryConstructor的方式,所以我不能从那里得到帮助.我很感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-19 07:52:16

找到解决办法了!

代码语言:javascript
复制
 UserModel _userDataFromSnapshot(DocumentSnapshot doc) {
    return UserModel(
        name: doc.get("name"),
        email: doc.get('email'),
        isAdmin: doc.get('isAdmin'),
        easypaisa: doc.get('easypaisa'),
        jazzCash: doc.get('jazzCash'),
        bankAccount: doc.get('bankAccount'),
        phoneNumber: doc.get('phoneNumber'),
        profileImage: doc.get('profilePic'),
        isFavorite: List.from(doc.data().toString().contains('favoritePackages')
            ? doc.get('favoritePackages')
            : []),
        activatedPackages: (doc.get('activatedPackages') as List<dynamic>)
            .map((item) => ListOfPackages(
                  acceptedPackage: item['acceptedPackage'],
                  packageId: item['packageId'],
                  packageTime: item['packageTime'],
                  proofImage: item['proofImage'],
                  uid: item['uid'],
                  username: item['uid'],
                ))
            .toList(),
        uid: doc.get('uid') ?? '');
  }
票数 0
EN

Stack Overflow用户

发布于 2022-03-18 19:56:20

您能否创建一个接受映射并将其转换为ListOfPackages对象的函数?然后,您可以在doc.get(‘activatedPackages’)上执行一个doc.get(‘activatedPackages’),将每个ListOfPackages对象一次一个地添加到ListOfPackages的列表中,然后将其分配给activatedPackages

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71532039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档