在Dart/Flutter中从集合转换为列表



我有一个类型为Set<WordPair>&我想将其转换为List<String>类型的列表,因为我想在Flutter 中使用SharedPreferencesAPI保存它

目前,我的状态看起来像

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分解为两个子字符串,并在相应的参数位置传递这两个子字符串。

[更新](后续问题作者提出的解决方案(解决方案可以在这里找到

相关内容

  • 没有找到相关文章

最新更新