如何使用共享首选项将项目列表添加到购物车[flout]



所以目前我正在学习flutter&飞奔

因此,我试图使用sharedpreferences包制作一个cart系统,但我仍然不知道如何制作。

我想在购物车中列出一个项目,下面是我试图使用shared_preferences 实现的目标

[{"id":109,"itemCount":"1","price":1269945,"image":"image.jpg"}, {"id":200,"itemCount":"1","price":2090424,"image":"image.jpg"}]

因此,如果有人知道如何做到这一点,或者有关于如何在没有sharedpreferences的情况下实现这一点的建议,请回答这些问题。

顺便说一句,提前谢谢。

我建议您不要使用shared_preferences,而是使用像Provider/RiverPod这样的状态管理器,它也是为这种情况设计的。CCD_ 5被设计用于存储小信息。

RiverPod包:RiverPod

Provider包:提供商

提供商小指南

您需要实现的是Map,因为您需要将物品ID映射到计数(我真的建议删除价格并按ID获取,它会给出更新的实时结果(。正如您在文档中看到的,共享首选项不支持映射,但它支持字符串。如果您需要一个从性能方面来说不太好但真正易于实现的解决方案,您可以使用以下片段:

[...]

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);
[...]

当您的用户重新打开应用程序时:

[...]
final myItemsAsJsonString = prefs.getString(cartKey);
final myItems = json.decode(myItemsAsJsonString);
[...]

最新更新