【问题标题】:Create Json Arrays and List with SharedPreferences使用 SharedPreferences 创建 Json 数组和列表
【发布时间】:2020-02-12 15:47:03
【问题描述】:

我一直在使用 shared_preferences 在 Json 文件中创建和写入。我面临的问题是我不知道如何在 shared_preferences 中创建 Json 数组和列表。

我想保存并读取一个 Json 列表。

  read(String key) async {
    final prefs = await SharedPreferences.getInstance();
    return json.decode(prefs.getString(key));
  }

  save(String key, value) async {
    final prefs = await SharedPreferences.getInstance();
    prefs.setString(key, json.encode(value));
  }

  remove(String key) async {
    final prefs = await SharedPreferences.getInstance();
    prefs.remove(key);
  }
} ```

【问题讨论】:

  • 能否请您重新表述您的问题并提供一些详细信息?以便 SO 社区可以更好地帮助您获得问题的答案

标签: flutter dart


【解决方案1】:

DartPad 上的示例。

使用setStringList 将列表保存到 SharedPreferences:

  const String key = "users";

  List<User> users = [User(name: "tester")];
  List<String> jsonList = users.map((user) => user.toJson()).toList();
  SharedPreferences prefs = await SharedPreferences.getInstance();

  prefs.setStringList(key, jsonList);

使用getStringList从 SharedPreferences 中读取列表:

  jsonList = prefs.getStringList(key);

  users = jsonList.map((json) => User.fromJson(json)).toList();

用json转换的用户类:JSON and serialization

class User {
  String name;
  int age;

  User({
    this.name,
    this.age,
  });

  factory User.fromJson(String str) => User.fromMap(json.decode(str));

  String toJson() => json.encode(toMap());

  factory User.fromMap(Map<String, dynamic> json) => User(
        name: json["name"],
        age: json["age"],
      );

  Map<String, dynamic> toMap() => {
        "name": name,
        "age": age,
      };
}

【讨论】:

    【解决方案2】:

    只需将您的 json 数组映射到 List&lt;String&gt;,然后您就可以使用 shared_preferences.dart 中提供的 setStringList 函数

      /// Saves a list of strings [value] to persistent storage in the background.
      ///
      /// If [value] is null, this is equivalent to calling [remove()] on the [key].
      Future<bool> setStringList(String key, List<String> value) =>
          _setValue('StringList', key, value);
    

    【讨论】:

    • 也许我不完全理解你的问题,但要阅读SharedPreferences,你可以使用getStringList(String key)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    相关资源
    最近更新 更多