如何使用共享首选项将项目列表添加到购物车 [flutter]
how to add a list of an item to cart using shared preferences [flutter]
所以我目前正在学习 flutter 和 dart。
所以,我试图使用 shared_preferences 包制作一个购物车系统,但我仍然不知道怎么做。
我想要购物车中的商品列表,这就是我试图使用 shared_preferences
实现的目标
[{"id":109,"itemCount":"1","price":1269945,"image":"image.jpg"}, {"id":200,"itemCount":"1","price":2090424,"image":"image.jpg"}]
因此,如果有人知道如何做到这一点,或者有关于如何在没有 shared_preferences 的情况下做到这一点的建议,请回答这个问题。
顺便谢谢你。
你需要的是一个地图,因为你需要将项目 ID 映射到计数(我真的建议删除价格并通过 ID 获取它,它会提供更新和实时结果)。从文档中可以看出,Shared Preferences 不支持映射,但它支持字符串。如果您需要一个从性能方面来说不是很好但很容易实现的解决方案,您可以使用以下代码片段:
[...]
const cartKey = 'cart';
final prefs = await SharedPreferences.getInstance();
final myItems = [
{
"id": 109,
"itemCount": "1",
"price": 1269945,
"image": "image.jpg",
},
{
"id": 200,
"itemCount": "1",
"price": 2090424,
"image": "image.jpg",
},
];
final myItemsAsJsonString = json.encode(myItems);
await prefs.setString(cartKey, myItemsAsJsonString);
[...]
当您的用户 re-opens 应用:
[...]
final myItemsAsJsonString = prefs.getString(cartKey);
final myItems = json.decode(myItemsAsJsonString);
[...]
我建议您不要使用 shared_preferences
,而是使用像 Provider
/RiverPod
这样的状态管理器,它也是为这种情况设计的。 Shared Preferences
设计用于存储小信息。
RiverPod
包裹:RiverPod
Provider
包裹:Provider
所以我目前正在学习 flutter 和 dart。
所以,我试图使用 shared_preferences 包制作一个购物车系统,但我仍然不知道怎么做。
我想要购物车中的商品列表,这就是我试图使用 shared_preferences
实现的目标[{"id":109,"itemCount":"1","price":1269945,"image":"image.jpg"}, {"id":200,"itemCount":"1","price":2090424,"image":"image.jpg"}]
因此,如果有人知道如何做到这一点,或者有关于如何在没有 shared_preferences 的情况下做到这一点的建议,请回答这个问题。
顺便谢谢你。
你需要的是一个地图,因为你需要将项目 ID 映射到计数(我真的建议删除价格并通过 ID 获取它,它会提供更新和实时结果)。从文档中可以看出,Shared Preferences 不支持映射,但它支持字符串。如果您需要一个从性能方面来说不是很好但很容易实现的解决方案,您可以使用以下代码片段:
[...]
const cartKey = 'cart';
final prefs = await SharedPreferences.getInstance();
final myItems = [
{
"id": 109,
"itemCount": "1",
"price": 1269945,
"image": "image.jpg",
},
{
"id": 200,
"itemCount": "1",
"price": 2090424,
"image": "image.jpg",
},
];
final myItemsAsJsonString = json.encode(myItems);
await prefs.setString(cartKey, myItemsAsJsonString);
[...]
当您的用户 re-opens 应用:
[...]
final myItemsAsJsonString = prefs.getString(cartKey);
final myItems = json.decode(myItemsAsJsonString);
[...]
我建议您不要使用 shared_preferences
,而是使用像 Provider
/RiverPod
这样的状态管理器,它也是为这种情况设计的。 Shared Preferences
设计用于存储小信息。
RiverPod
包裹:RiverPod
Provider
包裹:Provider