【发布时间】:2021-03-06 00:06:17
【问题描述】:
当小部件向cartData 询问产品时出现错误。
The getter 'product' was called on null.
Receiver: null
Tried calling: product
我不知道如何解决它。我不应该在Cart 类中使用Product 类吗?
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])
),
)
),
);
}
}
这是我的Cart 模型。我使用Products 就像来自另一个文件的列表
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
}
【问题讨论】: