在飞镖长笛,如果其他条件造成问题



在飞镖长笛中,如果其他条件导致问题。在这个带有if-else条件的方法中,forEach循环工作不正常因为它不允许print语句打印映射中的每个键和值。

地图数据来自消防仓库数据库

但是当我删除if-else条件时,它工作正常请帮忙。

代码

Future<List<ReviewModel>> getCakeReview(String cakeId) async {
CollectionReference snap = types.doc(cakeId).collection('Reviews');
List<ReviewModel> list = [];
ReviewModel model = ReviewModel("", "", 0, "");
String userName = "";
String userDP = "";
String review = "";
int rating = 0;
await snap.get().then((value) {
for (var result in value.docs) {
Map<String, dynamic> map = result.data() as Map<String, dynamic>;
print(map);
int i = 0;
map.forEach((key, value) {
print(key.toString() + ":" + value.toString());
print(i++);

if (key.toString() == 'userName') {
userName = value.toString();
} else if (key.toString() == 'userDP') {
userDP = value.toString();
} else if (key.toString() == 'rating') {
rating = value;
} else {
review = value.toString();
}
});
model = ReviewModel(userName, userDP, rating, review);
list.add(model);
}
});
print("FS");
return list;
}

输出图像链接

替换

map.forEach((key, value) {
print(key.toString() + ":" + value.toString());
print(i++);

if (key.toString() == 'userName') {
userName = value.toString();
} else if (key.toString() == 'userDP') {
userDP = value.toString();
} else if (key.toString() == 'rating') {
rating = value;
} else {
review = value.toString();
}
});

带有

userName = map['userName'];
userDP = map['userDP'];
rating = map['rating'];
review = map['review'];

以消除";对于开关";反模式。

现在我知道问题出在哪里了,

我试图将值(我认为从firebase返回时不是整数(存储到评级变量中,该变量是一个整数类型的

所以我所做的是,将该值解析为integer,运行良好。

代码

map.forEach((key, value) {
print(key.toString() + ":" + value.toString());
print(i++);

if (key.toString() == 'userName') {
userName = value.toString();
} else if (key.toString() == 'userDP') {
userDP = value.toString();
} else if (key.toString() == 'rating') {
rating =int.parse(value);
} else {
review = value.toString();
}
});

相关内容

  • 没有找到相关文章

最新更新