我有两种类型的设置要保存在用户应用程序设备上。首先是过滤器设置,其次是用户是否是第一次打开应用程序。
对于过滤器,我要保存多个布尔值,对于第一个打开的应用程序值,我只需要一个布尔值。现在的问题是,如果我使用另一个帐户登录应用程序,则选择第一个帐户的值。我需要为每个帐户设置一个集合,但我不知道如何操作,因为我一直在更改单个值。
这些是我获取和设置过滤器的功能:
void putShared(String key, bool val) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool(key, val);
}
Future getShared(String key) async {
final prefs = await SharedPreferences.getInstance();
bool val = prefs.getBool(key) == null ? false : (prefs.getBool(key));
return val;
}
那么如何更改代码以使其适用于多个帐户?
答案 0 :(得分:1)
我的建议是,在将值保存在共享首选项中时,您宁愿使用映射,该映射中的键必须是唯一的,例如ID和所需的值。然后对地图进行编码,将其转换为字符串,然后可以将其另存为字符串,然后在sharedPrefrences中保存,然后在检索时,只需对地图进行解码,然后检查登录的用户ID是否与您登录的ID相匹配(如果没有)不获取值,否则获取它们。
答案 1 :(得分:1)
您可以为所有键添加唯一的用户ID作为前缀。喜欢。
void putShared(String key, bool val) async {
String userSpecificKey = userID + key;
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool(userSpecificKey, val);
}
Future getShared(String key) async {
String userSpecificKey = userID + key;
final prefs = await SharedPreferences.getInstance();
bool val = prefs.getBool(userSpecificKey) == null ? false : (prefs.getBool(userSpecificKey));
return val;
}