注销的最佳方法 供应商和共享偏好

问题描述 投票:0回答:1

我有我的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;

但是当我注销的时候,这段代码似乎并没有工作,状态并没有被存储在共享的偏好中。

flutter sharedpreferences flutter-provider
1个回答
1
投票

你可以在provider的一个方法中清理shared_preference存储,如下所示

void logout() async{
  SharedPreferences preferences = await SharedPreferences.getInstance();
  await preferences.clear();
  this._isAuthenticated = false;
  this.notifyListeners();
}

你可以调用这个方法来使用提供者对象注销,并在通知注销后更改页面。

© www.soinside.com 2019 - 2024. All rights reserved.