我在火场有一张地图项目的清单。像这样
{
"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!"
}
]
}我不能把它正确地转换成飞镖.这只是一个例子,我的数据是不同的--我尝试过
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的数据进行映射
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的方式,所以我不能从那里得到帮助.我很感谢你的帮助。
发布于 2022-03-19 07:52:16
找到解决办法了!
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') ?? '');
}发布于 2022-03-18 19:56:20
您能否创建一个接受映射并将其转换为ListOfPackages对象的函数?然后,您可以在doc.get(‘activatedPackages’)上执行一个doc.get(‘activatedPackages’),将每个ListOfPackages对象一次一个地添加到ListOfPackages的列表中,然后将其分配给activatedPackages。
https://stackoverflow.com/questions/71532039
复制相似问题