withQuantity method
Setzt die Menge einer Position.
Faellt sie auf null, faellt die Position: eine Zeile „0 × Kaffee" waere weder auf dem Schirm noch auf dem Beleg etwas wert.
Implementation
Cart withQuantity(String id, int quantity) {
if (quantity <= 0) return removed(id);
var getroffen = false;
final neu = items.map((p) {
if (p.id != id) return p;
getroffen = true;
// Hoechstmenge je Beleg: darueber geht es nicht — egal woher der Griff kommt.
final grenze = (p.maxQuantity != null && p.maxQuantity! > 0) ? p.maxQuantity! : null;
return p.withQuantity(grenze != null && quantity > grenze ? grenze : quantity);
}).toList();
return getroffen ? Cart(items: neu) : this;
}