我收集了一些菜肴。
我想检索在他的菜单中有特定菜肴列表的所有餐厅。
我的数据模型是这样的:
restaurant---->rest1
| |-->menu
| | --> 1: true
| | --> 2: true
| | --> 3: true
|--->rest2
| |-->menu
| | --> 1: true
| | --> 2: true
| | --> 3: true
|--->rest3
| |-->menu
| | --> 1: true
我的菜肴清单是 [1,2],因此我只想检索rest1
并且rest2
我的代码是这样的:
Future loadRestaurantsByDishes({List idPiatti})async{
idPiatti.forEach((element) async {
dynamic result2 = await _restaurantServices.getRestaurantOfDish(id_piatto: element["dishId"].toString());
rest.add( result2);
});
if(rest.length >0){
List<RestaurantModel> mom = [];
List<RestaurantModel> temp = [];
rest.forEach((item) {
if(mom.isEmpty){
mom.addAll(item);
}else{
temp.addAll(item);
mom.removeWhere((element) => !temp.contains(element));
temp = [];
}
});
notifyListeners();
}
}
Future<List<RestaurantModel>> getRestaurantOfDish({String id_piatto}) async =>
_firestore.collection(collection).where("menu."+id_piatto, isEqualTo: true).get().then((result) {
List<RestaurantModel> restaurants = [];
for (DocumentSnapshot restaurant in result.docs) {
restaurants.add(RestaurantModel.fromSnapshot(restaurant));
}
return restaurants;
});
我的想法是检索所有制作特定菜肴的餐厅,然后检索这些列表之间的公共元素,以检索唯一拥有所有这些元素的餐厅蚂蚁。
问题是mom
在第一个语句中等于 item,但是当我运行它时mom.removeWhere((element) => !temp.contains(element));
它返回一个空列表。
我哪里错了?
谢谢