1

我正在尝试Map<String, List<MyObj>>在 sharedPreferences 中保存一个。
我尝试使用经典sharedPreferences包,但我遇到了麻烦。
如果我将字符串保存到 sharedPreferences,然后当我尝试检索和使用json.decode(...)时,我会收到错误Unhandled Exception: FormatException: Unexpected character (at character 2)...
如果我尝试使用保存它json.encode(...),我会收到错误Unhandled Exception: Converting object to an encodable object failed: Instance of 'MyObj'
我要保存的是这样的:

{ExampleString: [Instance of 'MyObj', Instance of 'MyObj'...], ExampleString2: [Instance of 'MyObj', Instance of 'MyObj'...], ...}

我该如何解决这个问题?
有没有可以保存地图的包?

4

1 回答 1

0

您有一个自定义对象:

class User {
  String name;
  String age;
  String location;

  User();
}

创建 toJson 和 fromJson:

Map<String, dynamic> toJson() => {
  'name': name,
  'age': age,
  'location': location,
};

User.fromJson(Map<String, dynamic> json)
    : name = json['name'],
      age = json['age'],
      location = json['location'];

然后像这样保存它:

prefs.setString(key, json.encode(value));

像这样加载它:

json.decode(prefs.getString(key));
于 2021-08-20T09:58:16.447 回答