我有一个类型为Set<WordPair>
&我想将其转换为List<String>
类型的列表,因为我想在Flutter 中使用SharedPreferences
API保存它
目前,我的状态看起来像
final Set<WordPair> _saved = Set<WordPair>();
现在我想将_saved
变量保存到SharedPreferences
中
如果我这样做了,prefs.setStringList('saved', _saved.toList());
会给我像一样的编译错误
[dart]参数类型"Set"不能分配给参数类型"List"。[argument_type_not_assignable]
如何在SharedPreferences
中存储完整的_saved
变量?
即使将其转换为列表,也无法将其保存在首选项中的原因是您正在尝试保存StringList
(prefs.setStringList
(,而您的集合类型为WordPair
解决方法可能是
prefs.setStringList('saved', _saved.map((WordPair wordPairItem) => wordPairItem.toString()).toList());
即将每个项目转换为字符串,然后将其保存为StringList
对于您在评论中的后续问题:
如何在
initState
中从List<String>
转换为Set<WordPair>
?由于没有CCD_ 15&包装需要2个参数,所以我知道怎么做?
根据文档,WordPair
就是Representation of a combination of 2 words, first and second
。因此,您可以将String分解为两个子字符串,并在相应的参数位置传递这两个子字符串。
[更新](后续问题作者提出的解决方案(解决方案可以在这里找到