首页 > 解决方案 > 如何使用共享首选项在 Flutter 中存储和保护地图列表?(颤振,共享首选项)

问题描述

我正在尝试在我的 Flutter 应用程序中保护和加载对话。为此,我将每条消息推送到地图列表:

  List<Map> messages = [];

  [...]

  messages.insert(0, {"data": 1, "message": "Hello, how are you?"}); //Message from user 1
  messages.insert(0, {"data": 2, "message": "I am fine."}); //Message from user 2

现在,如何在本地设备上保护这些数据(消息列表)并在启动应用程序时加载它?

我已经尝试过共享首选项,但它只允许我存储字符串类型的列表,而不是地图。

我可以将 Map 类型的 List 转换为 String 类型的 List 然后使用它吗?

标签: listflutterdarttype-conversionsharedpreferences

解决方案


编辑 ! SharedPreferences仅存储以下类型的数据:

  • 细绳
  • 布尔
  • 双倍的

在这种典型情况下,您将使用 SharedPreferences 来存储 String 类型。要实现这一点,您需要从您的数据中生成一个字符串类型。因此您将转换一个列表 => 字符串。为此,您需要添加一段非常短的代码来生成您的 String 。

List<Map> myData = [map2,map1];
jsonEncode(myData);

这个想法是将您的 List 转换为 Json 数据,以便您可以将其存储为 String 并在需要时对其进行解码。


推荐阅读