【问题标题】:How to save List<List<String>> with SharedPreferences in Flutter如何在 Flutter 中使用 SharedPreferences 保存 List<List<String>>
【发布时间】:2020-10-20 17:50:45
【问题描述】:

我正在尝试保存列表列表,但我不知道该怎么做。 所以我有 List _randList = new List();

【问题讨论】:

  • 这基本上是我的问题,我不知道如何使用 SharedPreferences 保存我的 List>。在我的 List> 我有 List 与字符串值。
  • 当我们不知道您确切卡在哪里时,我们无法帮助您解决问题。到目前为止,您可以做什么?你能保存一个字符串吗?一个列表?您的 List> 有什么问题?你有错误吗?
  • SharedPreferences prefs; List&lt;String&gt; list; // ... Future&lt;bool&gt; _saveList() async { return await prefs.setStringList("key", list); } List&lt;String&gt; _getList() { return prefs.getStringList("key"); } 这是保存 List 的代码,我需要保存 List>
  • 您好@ProKemikon,我建议您使用 SQLite 在应用程序中本地存储复杂数据。这是一个使您的工作变得轻松的插件。 pub.dev/packages/sqflite

标签: flutter dart sharedpreferences


【解决方案1】:

看,我们无法在订单商店List&lt;List&lt;String&gt;&gt; 中使用Shared Preferences。但是,我们始终可以使用解决方法。

由于我们已经可以将List&lt;String&gt; 存储在共享首选项中,因此最好以字符串的形式存储嵌套列表,如下所示

List<String> _arr = ["['a', 'b', 'c'], ['d', 'e', 'f']"];

这样,您将只有List&lt;String&gt;,但也将拥有您的数组,您可以以任何形式提取这些数组,或者只是下面的示例

for(var item in _arr){
  print(item);
}

//or you want to access the data specifically then store in another array the item
var _anotherArr = [];
for(var item in _arr){
  _anotherArr.add(item);
}

print(_anotherArr); // [['a', 'b', 'c'], ['d', 'e', 'f']]

通过这种方式,您将能够将数据存储在您的共享首选项中

SharedPreferences prefs;
List<String> _arr = ["['a', 'b', 'c'], ['d', 'e', 'f']"];


Future<bool> _saveList() async {
  return await prefs.setStringList("key", _arr);
}

List<String> _getList() {
  return prefs.getStringList("key");
}

所以,对你来说,将嵌套数组存储到单个字符串中,我想,你很高兴。 :)

【讨论】:

  • 谢谢。我认为这是解决我的问题的一个很好的解决方法!
  • 基本上,任何可以唯一表示为可以由 SharedPreferences 存储的类型,然后可以用于在其先前状态下重新实例化对象的对象都可以存储在 SharedPreferences 中。
  • 是的@ProKemikon,对于Shared Preferences 中的当前挑战,我们可以做这样的事情。我很高兴它对你有用:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2021-10-11
  • 2021-10-21
  • 2015-03-22
  • 2015-01-12
  • 2013-10-04
  • 2022-09-27
相关资源
最近更新 更多