'Issue implementing StateNotifierProvider from Riverpod
I am trying to implement a Cart System using Riverpod to manage the state of the Cart.
This is the part where the user clicks on a product to add it to the cart:
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);
}
},
)
Here you have the provider class:
import 'package:cart_system_riverpod/models/cart.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final cartListProvider = StateNotifierProvider((ref){
return CartList([]); //init empty cart
});
I have also added ProviderScope to the top of the Widgets tree.
My issue is that I am getting errors implementing:
cartInstance = context.read(cartListProvider)
and
context.read(cartListProvider).edit(cartItem,1);
always at the read(...) part
The editor shows the hint The method 'read' isn't defined for the type 'BuildContext'.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
