Flutter 保存多个用户的共享偏好

Flutter save shared preferences of multiple users

我有两种设置要保存在用户应用程序设备上。首先是过滤器设置,其次是用户是否是第一次打开应用程序。

对于过滤器,我有多个布尔值要保存,对于第一个打开的应用程序值,我只需要一个布尔值。现在我的问题是,如果我使用另一个帐户登录应用程序,则会选择第一个帐户的值。我需要为每个帐户设置一组,但我不知道如何,因为我一直在更改单个值。

这些是我获取和设置过滤器的函数:

    void putShared(String key, bool val) async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setBool(key, val);
}

Future getShared(String key) async {
  final prefs = await SharedPreferences.getInstance();

  bool val = prefs.getBool(key) == null ? false : (prefs.getBool(key));
  return val;
}

那么如何更改代码以使其适用于多个帐户?

我的建议是,在将值保存在 sharedprefrences 中时,您宁愿使用一个映射,其中的键必须是唯一的,例如您需要的 ID 和值。然后只需对地图进行编码,将其转换为字符串,然后您可以将其保存为 sharedPrefrences 中的字符串,然后当您检索时,您只需解码地图并检查登录的用户 ID 是否与您登录的 ID 匹配(如果不匹配)不获取值,否则获取它们。

您可以添加唯一的用户 ID 作为所有键的前缀。喜欢..

    void putShared(String key, bool val) async {

      String userSpecificKey = userID + key;

      SharedPreferences prefs = await SharedPreferences.getInstance();
      prefs.setBool(userSpecificKey, val);
    }
    

    Future getShared(String key) async {

      String userSpecificKey = userID + key;

      final prefs = await SharedPreferences.getInstance();
      bool val = prefs.getBool(userSpecificKey) == null ? false : (prefs.getBool(userSpecificKey));
      return val;
    }