flutter - Flutter - 将 json 数据保存在本地以供将来使用
问题描述
所以,我的问题是,我想在本地保存一个 json 数据,以便用户可以看到他保存的项目。
Future saveData() async {
SharedPreferences kitSalvos = await SharedPreferences.getInstance();
kitSalvos.setString('id', id);
kitSalvos.setString('content', content);
}
内容是json数据。
这就是我正在做的事情,但是,当我尝试创建它的列表时,它会带来其他 sharedPreferences。
_getDataKits() async {
SharedPreferences kitSalvos = await SharedPreferences.getInstance();
print(kitSalvos.getKeys());
}
输出:
{isLogged, senha, email, 20210408, 20210408040319, token, id, content}
我只想带上保存的项目(即 ID 和 CONTENT)共享首选项...
有没有办法让它分开?所以我只能得到ID和CONTENT...
另外,使其成为一个,喜欢和对象:
kitsalvos = [ id: ID, content: CONTENT ];
将有超过 1 个保存的项目,所以我需要将所有项目分开存储...
解决方案
您可以将 JSON 保存在字符串中,当您必须使用它时,您可以获取字符串并解析为模型。
创建此模型:
// To parse this JSON data, do
//
// final kitModel = kitModelFromMap(jsonString);
import 'dart:convert';
KitModel kitModelFromMap(String str) => KitModel.fromMap(json.decode(str));
String kitModelToMap(KitModel data) => json.encode(data.toMap());
class KitModel {
KitModel({
this.the20210408,
this.isLogged,
this.senha,
this.email,
this.the20210408040319,
this.token,
this.id,
this.content,
});
String the20210408;
bool isLogged;
String senha;
String email;
String the20210408040319;
String token;
int id;
String content;
factory KitModel.fromMap(Map<String, dynamic> json) => KitModel(
the20210408: json["20210408"],
isLogged: json["isLogged"],
senha: json["senha"],
email: json["email"],
the20210408040319: json["20210408040319"],
token: json["token"],
id: json["id"],
content: json["content"],
);
Map<String, dynamic> toMap() => {
"20210408": the20210408,
"isLogged": isLogged,
"senha": senha,
"email": email,
"20210408040319": the20210408040319,
"token": token,
"id": id,
"content": content,
};
}
保存工具包->
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('content', content);
获取工具包->
dart:convert
SharedPreferences prefs = await SharedPreferences.getInstance();
String KitJson = prefs.getString("content");
if (KitJson != null) {
kit = KitModel.fromMap(json.decode(KitJson));
}
现在你可以使用
print({kit.id, kit.content, kit.toke, kit.isLogged}); //And so on
推荐阅读
- javascript - Javascript将对象放入数组中
- r - 与 R 中的 API 错误交互以进行循环
- javascript - 路由转换在 nuxt.js + electron.js 中不起作用
- apache - Apache htaccess:无法同时使用 RewriteCond HTTPS 和 HTTP_USER_AGENT
- php - 创建自定义 woocommerce 结帐模板
- kubernetes - 如何在谷歌 Kubernetes 引擎上增加主节点的大小?
- c# - 如何在 Azure fluent API for SQL Server 中为现有数据库设置服务器级别目标(定价层)?
- c# - 错误:在尝试连接两个数据表时找不到源类型数据表的查询实现和未找到连接
- javascript - How to Pre-select [checked] first radio button using ngfor loop index value
- java - java.lang.IllegalArgumentException:坏类:类 java.lang.String