【发布时间】:2022-02-10 05:27:03
【问题描述】:
我正在尝试使用 Riverpod 实现一个购物车系统来管理购物车的状态。
这是用户点击产品以将其添加到购物车的部分:
GestureDetector(
child: Icon(Icons.shopping_cart),
onTap: () async {
print("cart test");
//create new cart item
Cart cartItem = new Cart(
id: product.id,
name: product.name,
oldPrice: product.oldPrice,
price: product.price,
imageUrl: product.imageUrl,
category: product.category,
quantity: 1
);
var cartInstance = context.read(cartListProvider);
if(isExistsInCart(cartInstance.state,cartItem))
context.read(cartListProvider).edit(cartItem,1);
else
{
context.read(cartListProvider).add(cartItem);//if already available in cart, just increase quantity
var string = json.encode(context.read(cartListProvider).state);
await storage.write(key: cartKey, value: string);
}
},
)
这里有提供者类:
import 'package:cart_system_riverpod/models/cart.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final cartListProvider = StateNotifierProvider((ref){
return CartList([]); //init empty cart
});
我还在小部件树的顶部添加了 ProviderScope。
我的问题是我在执行时遇到了错误:
cartInstance = context.read(cartListProvider)
和
context.read(cartListProvider).edit(cartItem,1);
总是在read(...) 部分
编辑器显示提示The method 'read' isn't defined for the type 'BuildContext'.
【问题讨论】:
-
你用的是什么版本的riverpod?
-
@Josteve,flutter_riverpod:^1.0.3