【问题标题】:How to save data from API temporary in device Flutter如何在设备 Flutter 中临时保存来自 API 的数据
【发布时间】:2020-02-05 10:27:53
【问题描述】:

当我打开我的应用程序时,每次我都需要等待它从 API 加载数据。我想将数据临时保存在本地存储上,以使应用程序脱机工作,并且还可以更快地加载数据。我想从 api、json 数据中获取数据并将它们保存到本地存储。我可以知道什么方法或可以使用任何包吗?提前致谢

【问题讨论】:

  • 你可以使用Shared Preference
  • 您可以使用SharedPreferencesHive。我建议你使用Hive
  • 离线时使用 SQLite 加载数据,在线时更新数据,然后从 SQLite 中使用

标签: flutter


【解决方案1】:

我会推荐使用 SharedPreferences + JSON。例如,您可能有一个用户对象:

class User {

  final String name;
  final String email;

  User(this.name, this.email);

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

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

那么你需要做的是:

SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString("user", jsonEncode(user));

并恢复对象:

SharedPreferences prefs = await SharedPreferences.getInstance();
User user = User.fromJson(jsonDecode(prefs.getString("user")));

【讨论】:

  • 感谢您的回复,我已经在上面添加了我的代码。我可以知道我需要将 SharedPreferences 放在哪里吗?
  • @dipgirl:您可以在从 API 请求数据后执行此操作。在您的代码中,在 response.statusCode == 200 条件内。
  • @Ampersanda,好的,我试试。谢谢
  • 参数类型'String'不能分配给参数类型'Map' 我在这一行有错误 User user = User.fromJson(prefs.getString("user ");.
  • Soory,@dipgirl 我的回答有误。正确的行是: User user = User.fromJson(jsonDecode(prefs.getString("user")));
猜你喜欢
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2021-11-14
  • 1970-01-01
  • 2020-02-09
  • 1970-01-01
相关资源
最近更新 更多