I have error when widget ask product from cartData
.
The getter 'product' was called on null.
Receiver: null
Tried calling: product
I don't know how to fix it. Shouldn't I use Product
class in Cart
class?
class Body extends StatefulWidget {
@override
_BodyState createState() => _BodyState();
}
class _BodyState extends State<Body> {
@override
Widget build(BuildContext context){
final cartData = Provider.of<CartDataProvider>(context);
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: ListView.builder(
itemCount: cartData.cartItems.length,
itemBuilder: (context, index) => Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: Dismissible(
key: Key(cartData.cartItems[index].product.id.toString()),
direction: DismissDirection.endToStart,
background: Container(
padding: EdgeInsets.symmetric(horizontal: 20),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Color(0xFFFFE6E6),
),
child: Row(
children: [
Spacer(),
Icon(Icons.delete_sweep_outlined),
],
),
),
onDismissed: (direction) {
setState(() {
cartData.deleteItem(index);
});
},
child: CartItemCard(cart: cartData.cartItems[index])
),
)
),
);
}
}
This is my Cart
model. I use Products
like a list from another file
class Cart {
final Product product;
final int numOfitems;
Cart({@required this.product, @required this.numOfitems});
}
class CartDataProvider with ChangeNotifier{
Map<int, Cart> _cartItems = {
1 : Cart(product: products[0], numOfitems: 2),
2 : Cart(product: products[1], numOfitems: 1),
3 : Cart(product: products[2], numOfitems: 3),
4 : Cart(product: products[3], numOfitems: 2),
5 : Cart(product: products[4], numOfitems: 1),
6 : Cart(product: products[5], numOfitems: 4),
};
UnmodifiableMapView<int, Cart> get cartItems =>
UnmodifiableMapView<int, Cart>(_cartItems);
//Some methods
}