Flutter & Shared Preferences:如何将(对象)列表保存到本地内存?

Flutter & Shared Preferences : How do I save a list (of object) to local memory?

我想使用 shared_preferences 包将对象列表保存到我的本地内存中。

假设这是我的 class:

class Person{
   String name;
   String age;
   String gender;
}

如何使用 shared_preferences 做到这一点?

期待大家的来信。谢谢。

您可以用 shared_preferences 保存 List<String>。 因此,我们需要将 Person class 及其列表转换为 String,方法是将它们编码为 JSON:

class Person {
    String name;
    String age;
    String gender;
    Person({this.name, this.age, this.gender});

    factory Person.fromJson(Map<String, dynamic> parsedJson) {
        return new Person(
            name: parsedJson['name'] ?? "",
            age: parsedJson['age'] ?? "",
            gender: parsedJson['gender'] ?? "");
    }

    Map<String, dynamic> toJson() {
        return {
          "name": this.name,
          "age": this.age,
          "gender": this.gender,
        };
    }
}

void _savePersons(List<Person> persons) async {
   SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
   List<String> personsEncoded = persons.map((person) => jsonEncode(person.toJson())).toList();
   await sharedPreferences.setStringList('accounts', accounts);
}

以同样的方式,我们可以将保存的 List<Person> 作为 JSON 对象并反序列化:

List<Person> _getPersons(List<Person> persons) async {
   SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
   await sharedPreferences.setStringList('accounts', accounts);
   return persons.map((person) => Person.fromJson(person)).toList();
}