我一直在flutter中使用shared_preference,直到现在还工作得很好。突然它停止工作,在iOS和Android中都是。我一步一步地调试它,它将数据存储到pref,当应用程序打开时,数据仍然存在,但热重启后_preferencecache总是为空。我如何解决这个问题?(版本是0.5.12)
当用户登录时,我保存user_id:
final prefs = await SharedPreferences.getInstance();
final userData = json.encode(
{
'user_id': userID,
},
);
prefs.setString('userData', userData);
稍后,当用户再次重新启动时:
final prefs = await SharedPreferences.getInstance();
if (!prefs.containsKey('userData')) {
// print("no user data in shared preference");
return false;
}
但是abpve函数返回false,这就是问题所在,我也检查了以前版本的shared_preferences,但是没有解决方案。
3条答案
按热度按时间soat7uwm1#
你必须这样做
cczfrluj2#
我意识到我在应用程序的某个地方清除了我的共享首选项,但我忘记了。请检查代码中
sharedPreferences.clear()
的每个地方。你永远不会知道。fcy6dtqo3#
我假设在您的代码中的某个地方,您遇到了this error,作为一个快速的解决方案,您在代码中添加了
SharedPreferences.setMockInitialValues({});
,这应该是原因(而不是sharedPreferences.clear()
)。SharedPreferences.setMockInitialValues({});
是阻止数据在会话之间持久化的原因。一个快速的解决方法是在代码中添加一个
try-catch
块,如下所示:但这不是解决这个问题的常规方法,我建议按Siddharth Agrawal检查this answer。