如何在设备Flutter中保存缓存

时间:2020-02-05 08:59:46

标签: flutter

我是Flutter的新手,这是我在Flutter中的第一个项目。我想做一个项目,一旦从 API 加载数据,它们就会被缓存在设备中。下次即使我的设备离线,它也可以非常快速地加载。我在这里可以使用 Dio 包和dio缓存管理器包来缓存服务器的json响应。然后使用缓存图像包来缓存图像。任何人都可以给我示例如何编写代码?预先感谢

3 个答案:

答案 0 :(得分:3)

在颤动中进行缓存的另一种最佳方法是使用配置单元。 enter image description here,它检索数据的速度比Sqflite和“共享”偏好设置

例如,您可以检查以下GitHub存储库:https://github.com/shashiben/Anime-details

这将显示如何将其余的API数据缓存到配置单元中,并在下一次显示配置单元中的数据时。

我认为这个答案对您有帮助

答案 1 :(得分:0)

是的,我建议将sqflite软件包用于扑打,我已经弄清楚了如何使用它来解决同一问题!我通过以下YouTube视频https://youtu.be/1BwjNEKD8g8来了解它。

答案 2 :(得分:-1)

尝试共享首选项https://pub.dev/packages/shared_preferences

只需将您的回复解码为 string 并保存到sharePreference, 并在需要时将该字符串编码为对象。

import 'package:shared_preferences/shared_preferences.dart'; 

//storing response as string
SharedPreferences sharedPref = await SharedPreferences.getInstance();
            Map decode_options = jsonDecode(jsonString);
            String user = jsonEncode(User.fromJson(decode_options));
            sharedPref.setString('user', user);//storing

//getting string and converting into Object
SharedPreferences sharedPref = await SharedPreferences.getInstance();
            Map userMap = jsonDecode(sharedPref.getString('user')); //retriving
            var user = User.fromJson(userMap);

    class User {
      final String name;
      final String age;

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

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

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