我有我的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;
但是当我注销的时候,这段代码似乎并没有工作,状态并没有被存储在共享的偏好中。
你可以在provider的一个方法中清理shared_preference存储,如下所示
void logout() async{
SharedPreferences preferences = await SharedPreferences.getInstance();
await preferences.clear();
this._isAuthenticated = false;
this.notifyListeners();
}
你可以调用这个方法来使用提供者对象注销,并在通知注销后更改页面。