在飞镖长笛中,如果其他条件导致问题。在这个带有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();
}
});