【问题标题】:How to clear all SharedPreferences keys except 2 Keys in flutter如何清除除颤动中的 2 个键之外的所有 SharedPreferences 键
【发布时间】:2019-06-05 07:17:31
【问题描述】:

我试图在注销期间清除 SharedPreferences 的所有键值,但 "EmailID""Password" 两个键除外。正如我们所知,flutter 中只允许一个 SharedPreferences 实例,所以我不能创建一个不同的实例来存储 "EmailID""Password" 并删除特定的键不是删除 20 多个键的好习惯。如果我使用prefs.clear();,那将清除所有关键值,非常感谢。

【问题讨论】:

  • 只是为了焦虑,为什么要在注销后保留电子邮件和密码?它也应该被清除。
  • 如果用户检查了记住密码,所以我存储了一个布尔标志,只有在这种情况下,我才需要保留存储电子邮件和密码,这将有助于在不输入电子邮件和密码的情况下再次登录
  • 您可以清除共享首选项并重写 EmailID 和密码(您在清除之前保存在变量中)

标签: flutter dart sharedpreferences


【解决方案1】:

这是没有办法避免的,你必须一一清除这些值。

您必须迭代共享首选项键并避免使用您不想清除的键。

 SharedPreferences preferences = await SharedPreferences.getInstance();
        for(String key in preferences.getKeys()) {
          if(key != "email" && key!= "password") {
            preferences.remove(key);
          }
        }

【讨论】:

    【解决方案2】:

    另一种简单的方法如下:

     String _email    = prefs.email;
     String _password = prefs.password;
    
     prefs.clear();
     prefs.email      = _email;
     prefs.password   = _password;
    

    根据您在 SharedPreferences 中的信息量,这可能是比迭代每个键更有效的功能

    附:不建议在 SharedPreferences 中存储密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2021-11-24
      • 2020-06-23
      • 1970-01-01
      相关资源
      最近更新 更多