Вы можете объединить списки, используя + или оператор распространения
Используя Оператор сложения:
List<shop> shops = [shop1, shop2];
List<Product> products = shop1.products + shop2.products;
Использование Оператор спреда:
List<Product> products = [...shop1.products, ...shop2.products];
Редактировать
Вам необходимо сделать это следующим образом:
List<shop> shops = [shop1, shop2,...];
List<Product> mergedProducts = []
for(int i = 0; i < shops.length; i++){
mergedProducts = mergedProducts + shops[i].products;
}