Dart не поддерживает нелокальные возвраты, поэтому возврат из обратного вызова не нарушит l oop. Обратный вызов Dart forEach возвращает void.
Вы можете использовать any
вместо forEach
, поскольку any
обратный вызов возвращает bool. Поэтому вы можете изменить свой код следующим образом.
void addOrderToCart(Product product, int quantity, String color, String size) {
_lastOrder = Order(product, quantity, _orderId++, color, size);
_orders.any((element) {
if(element.product.id == _lastOrder.product.id){
element.colors.add(color);
element.sizes.add(size);
element.quantity = element.quantity + quantity;
notifyListeners();
return true;
}
return false;
});
_orders.add(_lastOrder);
notifyListeners();
}
Надеюсь, это поможет вам.
Удачного кодирования!