如何在 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
的作用有误。它所做的只是保存您提供给它的列表。它不会添加到现有列表,也不会检查列表的内容。
如果你想要一个特定的逻辑,比如添加到列表或删除重复项,你需要获取列表,根据需要操作列表,然后设置这个列表。
我试图在用户点击屏幕时存储 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
的作用有误。它所做的只是保存您提供给它的列表。它不会添加到现有列表,也不会检查列表的内容。
如果你想要一个特定的逻辑,比如添加到列表或删除重复项,你需要获取列表,根据需要操作列表,然后设置这个列表。