将对象编码为 json,将其存储在 sharedprefs 中,然后将其作为字符串检索
Encode an objects to json, store it in sharedprefs, then retrieve it as string
在我的应用程序中,用户选择他想阅读的章节、他想开始的诗句和结束诗句。
我要把这三个字符串存起来,显示在他的“阅读历史”列表里,他可以在里面看到他以前所有的阅读。
我读到你可以通过创建一个 class 来做到这一点,将它们存储在一个对象中并将其转换为 JSON,然后将其存储在 sharedprefs 中。(或类似的东西)。
但是我不理解他们,因为他们和我的情况有点不同。
这是 class:
class Segment {
final String chapter;
final String from;
final String to;
Segment({this.chapter, this.from, this.to});
factory Segment.fromJson(Map<String, dynamic> json) {
return Segment(
chapter: json['chapter'],
from: json['from'],
to: json['to'],
);
}
Map<String, dynamic> toJson() {
return {
'chapter': chapter,
'from': from,
'to': to,
};
}
}
这些是我想知道的步骤:
- 将字符串存储在对象中。
- 将对象编码为 JSON。
- 将其存储在 sharedprefs 中。
- 将其解码并从列表中选择某个项目。
您可以在 Flutter 中存储具有共享首选项的 JSON(地图)对象,方法是将地图编码为原始 JSON(它基本上是一个字符串)。
要存储具有共享首选项的内容,您应该首先将其添加到您的依赖项中。 Here的怎么样。
然后在您的代码中的某处通过执行以下操作获取 SharedPreferences
对象的实例:
final prefs = await SharedPreferences.getInstance();
之后,您应该对从 Segment
class 获得的 Map
进行编码,方法是:
Segment segment = Segment(...);
String rawJson = jsonEncode(segment.toJson());
要使用共享首选项保存这个新 JSON 运行 此命令将整个 JSON 存储为字符串:
prefs.setString('my_string_key', rawJson);
当您想从共享首选项中读取数据时,请使用:
final rawJson = prefs.getString('my_string_key') ?? '';
Map<String, dynamic> map = jsonDecode(rawJson);
final Segment = Segment.fromJson(map);
有关详细信息,请参阅此 article。
在我的应用程序中,用户选择他想阅读的章节、他想开始的诗句和结束诗句。
我要把这三个字符串存起来,显示在他的“阅读历史”列表里,他可以在里面看到他以前所有的阅读。
我读到你可以通过创建一个 class 来做到这一点,将它们存储在一个对象中并将其转换为 JSON,然后将其存储在 sharedprefs 中。(或类似的东西)。 但是我不理解他们,因为他们和我的情况有点不同。
这是 class:
class Segment {
final String chapter;
final String from;
final String to;
Segment({this.chapter, this.from, this.to});
factory Segment.fromJson(Map<String, dynamic> json) {
return Segment(
chapter: json['chapter'],
from: json['from'],
to: json['to'],
);
}
Map<String, dynamic> toJson() {
return {
'chapter': chapter,
'from': from,
'to': to,
};
}
}
这些是我想知道的步骤:
- 将字符串存储在对象中。
- 将对象编码为 JSON。
- 将其存储在 sharedprefs 中。
- 将其解码并从列表中选择某个项目。
您可以在 Flutter 中存储具有共享首选项的 JSON(地图)对象,方法是将地图编码为原始 JSON(它基本上是一个字符串)。
要存储具有共享首选项的内容,您应该首先将其添加到您的依赖项中。 Here的怎么样。
然后在您的代码中的某处通过执行以下操作获取 SharedPreferences
对象的实例:
final prefs = await SharedPreferences.getInstance();
之后,您应该对从 Segment
class 获得的 Map
进行编码,方法是:
Segment segment = Segment(...);
String rawJson = jsonEncode(segment.toJson());
要使用共享首选项保存这个新 JSON 运行 此命令将整个 JSON 存储为字符串:
prefs.setString('my_string_key', rawJson);
当您想从共享首选项中读取数据时,请使用:
final rawJson = prefs.getString('my_string_key') ?? '';
Map<String, dynamic> map = jsonDecode(rawJson);
final Segment = Segment.fromJson(map);
有关详细信息,请参阅此 article。