1

当用户在屏幕上单击时,我试图存储 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]

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

谢谢你的时间。

4

1 回答 1

0

我认为你搞错了什么setStringList。它所做的只是保存你给它的列表。它不会添加到现有列表中,也不会检查列表的内容。

如果您需要特定的逻辑,例如添加到列表或删除重复项,您需要获取列表,按照您认为合适的方式操作列表,然后设置此列表。

于 2020-12-09T07:41:22.797 回答