我是Flutter的新手,这是我在Flutter中的第一个项目。我想做一个项目,一旦从 API 加载数据,它们就会被缓存在设备中。下次即使我的设备离线,它也可以非常快速地加载。我在这里可以使用 Dio 包和dio缓存管理器包来缓存服务器的json响应。然后使用缓存图像包来缓存图像。任何人都可以给我示例如何编写代码?预先感谢
答案 0 :(得分:3)
在颤动中进行缓存的另一种最佳方法是使用配置单元。 ,它检索数据的速度比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
};
}
}