【问题标题】:Convert from Set to List in Dart / Flutter?在 Dart / Flutter 中从 Set 转换为 List?
【发布时间】:2018-12-11 04:24:59
【问题描述】:

我有一组 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 变量?

【问题讨论】:

    标签: dart flutter sharedpreferences flutter-dependencies


    【解决方案1】:

    即使将其转换为列表后您也无法将其保存在首选项中的原因是您尝试保存 StringList (prefs.setStringList) 而您的集合类型为 WordPair

    解决方法可能是,

    prefs.setStringList('saved', _saved.map((WordPair wordPairItem) => wordPairItem.toString()).toList());
    

    即将每一项转换成String,然后保存为StringList

    关于您在 cmets 中的后续问题:

    如何在initState 中将List&lt;String&gt; 转换为Set&lt;WordPair&gt;?由于没有.toWordPair() & 结束需要 2 个参数,所以 Idk 该怎么做?

    根据文档,WordPairRepresentation of a combination of 2 words, first and second。因此,您可以将字符串分成两个子字符串,并将这两个子字符串传递到各自的参数位置。

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

    【讨论】:

    • 谢谢你,丹尼斯。有效。跟进,我如何将initState中的List&lt;String&gt;转换为Set&lt;WordPair&gt;
    • 因为没有.toWordPair() & 结束需要 2 个参数所以 Idk 怎么做?
    • 根据文档,WordPair 是第一个和第二个两个单词组合的表示。因此,您可以在第一个参数中传递列表的第一项,在下一个参数中传递一个空字符串。
    • 啊,天哪。永远不会想到这一点:)
    • 只是一个问题,您是否也尝试过asString方法?我的意思是根据文档pub.dartlang.org/documentation/english_words/latest/…,它应该是世界的。
    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2021-05-27
    • 2023-03-09
    • 2022-01-05
    • 2021-10-15
    • 2016-09-28
    相关资源
    最近更新 更多