【问题标题】:Flutter : how save list of dynamic to shared preferenceFlutter:如何将动态列表保存到共享首选项
【发布时间】:2021-10-02 16:32:52
【问题描述】:

我正在尝试将数据列表保存到共享偏好并阅读这些文章,但不适用于我:

Flutter save List with shared preferences

Shared Preferences in Flutter cannot save and read List

我有这份清单:

var list =[
       {
          "id" : 1,
          "name" : "ali"
        },
        {
          "id" : 2,
          "name" : "jhon"
        }
      ];

我试过了:

setList() async {
    Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
    final SharedPreferences prefs = await _prefs;
    prefs.setStringList('list', list);
  }

我收到此错误:The argument type 'List&lt;Map&lt;String, Object&gt;&gt;' can't be assigned to the parameter type 'List&lt;String&gt;'

【问题讨论】:

  • 我在考虑如何找回它们?
  • @YeasinSheikh 怎么样?

标签: list flutter sharedpreferences


【解决方案1】:

发生错误是因为您的listMap&lt;String, Object&gt; 类型而不是String。要解决此问题,您可以使用 jsonEncode 方法将其转换为 String

Future<void> setList() async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  final List<String> jsonList = list.map((item) => jsonEncode(item)).toList();
  prefs.setStringList('list', jsonList);
}

如果您现在想要检索此列表,您必须使用 jsonDecode 将其转换回 Map&lt;String, Object&gt;

List<Map<String, Object>> getList() async {
  final SharedPreferences prefs = await SharedPreferences.getInstance();
  final List<String> jsonList = prefs.getStringList('list')
  final List<Map<String, Object> list = jsonList.map((item) => jsonDecode(item)).toList();
  return list;
}

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2021-08-16
    • 2017-04-26
    • 2021-05-31
    • 2016-06-06
    • 2014-01-11
    相关资源
    最近更新 更多