如何在 Flutter 的 getStringList(Shared Preference) 中将数据存储为数组

How to store data as array in getStringList(Shared Preference) in Flutter

我试图在用户点击屏幕时存储 documentId 数组。我尝试使用 SharedPreference 写入和加载数据,但它存储为字符串,而不是数组。

我的代码:

_writedata() async{
      final prefs = await SharedPreferences.getInstance();
      final key = 'my_key';
      prefs.setStringList(key, [docId]);
    }

_loadData() async{
      final prefs = await SharedPreferences.getInstance();
      final key = 'my_key';
      final value = prefs.getStringList(key) ?? [];
      print('load data: $value');
    }

我的输出:

I/flutter (17292): load data: [9koh2fe2T4FydH2xoqzo]
I/flutter (17292): load data: [aV58m2nZsHtCtGafidh2]
I/flutter (17292): load data: [60Q9uduXR5sqMww1i58D]
I/flutter (17292): load data: [EmrgSlHOGDUHqzDFo4vm]
I/flutter (17292): load data: [D5mJi5Tt6p8GKP9OyE8r]

有人可以指导我如何通过避免重复值以数组格式存储它吗?

感谢您的宝贵时间。

我认为您对 setStringList 的作用有误。它所做的只是保存您提供给它的列表。它不会添加到现有列表,也不会检查列表的内容。

如果你想要一个特定的逻辑,比如添加到列表或删除重复项,你需要获取列表,根据需要操作列表,然后设置这个列表。