如何使用共享首选项将项目列表添加到购物车 [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

Small guide for Provider