我有ChangeNotifier类,该类应该触发注销会话跟踪,但是它无法正常工作,实现此的更干净的方法是什么,这是我的ChnageNotifier代码:
class ProfileTracker with ChangeNotifier {
bool _isAuthenticated = false;
static const String AUTH_TRACKER = "AUTH_TRACKER";
void setUp(val)async{
SharedPreferences prefs = await SharedPreferences.getInstance();
_isAuthenticated = await prefs.setBool(AUTH_TRACKER, val);
notifyListeners();
}
bool get isAuthenticated {
return this._isAuthenticated;
}
set isAuthenticated(bool newVal) {
setUp(newVal);
this.notifyListeners();
}
}
然后,这是我登录时设置的代码:
var profileTracker =
Provider.of<ProfileTracker>(context, listen: false);
profileTracker.isAuthenticated = true;
注销时,我使用:
var profileTracker =
Provider.of<ProfileTracker>(context, listen: false);
profileTracker.isAuthenticated = false;
但是我注销后代码似乎无法正常工作,状态没有存储在共享首选项中。
答案 0 :(得分:1)
您可以按照以下提供程序中的方法清除shared_preference存储空间
void logout() async{
SharedPreferences preferences = await SharedPreferences.getInstance();
await preferences.clear();
this._isAuthenticated = false;
this.notifyListeners();
}
您可以使用提供者对象调用此方法以注销,并在通知注销后更改页面。