1
0
Fork 0

Add product selection store

inheritedwidget
Jonas Franz 2 years ago
parent 84222618d5
commit c061e361eb
  1. 4
      lib/models/product.dart
  2. 31
      lib/stores/product_selection_store.dart

@ -1,8 +1,10 @@
import 'package:flutter/foundation.dart';
typedef ProductTitle = String;
@immutable
class Product {
final String title;
final ProductTitle title;
final double price;
String get priceAsString => price.toStringAsFixed(2);

@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:thesis_shop/models/product.dart';
class ProductSelectionStore extends InheritedWidget {
const ProductSelectionStore({
Key? key,
required this.products,
required this.productAmounts,
required this.increaseAmount,
required this.decreaseAmount,
required Widget child,
}) : super(key: key, child: child);
final List<Product> products;
final Map<ProductTitle, int> productAmounts;
final Function(Product) increaseAmount;
final Function(Product) decreaseAmount;
static ProductSelectionStore of(BuildContext context) {
final ProductSelectionStore? result =
context.dependOnInheritedWidgetOfExactType<ProductSelectionStore>();
assert(result != null, 'No ProductSelectionStore found in context');
return result!;
}
@override
bool updateShouldNotify(ProductSelectionStore oldWidget) {
return productAmounts != oldWidget.productAmounts;
}
}
Loading…
Cancel
Save