Flutter 对于多个用户,是否需要多个SharedReference?

Flutter 对于多个用户,是否需要多个SharedReference?,flutter,google-cloud-firestore,sharedpreferences,Flutter,Google Cloud Firestore,Sharedpreferences,我在SharedReference中存储了一个数据列表,该列表只能由特定用户查看,但是当我尝试登录另一个帐户时,我仍然能够查看数据 是否由于本地开发环境的原因,即使不同的用户登录,我们仍将读取相同的SharedReference文件?我是否可以假设,一旦应用程序投入生产,问题就会消失,因为用户应该使用不同的机器 如果没有,如何为多个用户实现多个SharedReference 谢谢 这很可能是因为您存储数据的方式。共享首选项取决于键字符串。如果存储不同的用户,但对所有用户使用相同的关键字,即use

我在SharedReference中存储了一个数据列表,该列表只能由特定用户查看,但是当我尝试登录另一个帐户时,我仍然能够查看数据

是否由于本地开发环境的原因,即使不同的用户登录,我们仍将读取相同的SharedReference文件?我是否可以假设,一旦应用程序投入生产,问题就会消失,因为用户应该使用不同的机器

如果没有,如何为多个用户实现多个SharedReference


谢谢

这很可能是因为您存储数据的方式。共享首选项取决于键
字符串
。如果存储不同的用户,但对所有用户使用相同的关键字,即
user
,则该关键字不会是唯一的


为每个用户指定一个唯一的密钥,最简单的方法就是使用他们的电子邮件。当您将该数据存储在共享首选项中时,请为每个用户使用此唯一键。这样就不会有数据重叠。

将json数据作为字符串存储到共享首选项

然后,您可以为每个用户存储唯一的密钥和值

以下是将json存储为字符串的示例:(注意,此示例适用于单个对象,适用于多用户使用数组列表,其中包含多个对象)

SharedReferences shared\u User=等待SharedReferences.getInstance();
Map decode_options=jsonDecode(jsonString);
字符串user=jsonEncode(user.fromJson(解码选项));
shared_User.setString('User',User);
SharedReferences shared_User=等待SharedReferences.getInstance();
Map userMap=jsonDecode(shared_User.getString('User');
var user=user.fromJson(userMap);
类用户{
最后的字符串名;
最终管柱年龄;
用户({this.name,this.age});
factory User.fromJson(Map parsedJson){
返回新用户(
名称:parsedJson['name']??“,
年龄:parsedJson['age']?“”);
}
映射到JSON(){
返回{
“名字”:这个名字,
“年龄”:这个年龄
};
}
}

谢谢。简明扼要!不客气!
SharedPreferences shared_User = await SharedPreferences.getInstance();
            Map decode_options = jsonDecode(jsonString);
            String user = jsonEncode(User.fromJson(decode_options));
            shared_User.setString('user', user);

SharedPreferences shared_User = await SharedPreferences.getInstance();
            Map userMap = jsonDecode(shared_User.getString('user'));
            var user = User.fromJson(userMap);

    class User {
      final String name;
      final String age;

      User({this.name, this.age});

      factory User.fromJson(Map<String, dynamic> parsedJson) {
        return new User(
            name: parsedJson['name'] ?? "",
            age: parsedJson['age'] ?? "");
      }

      Map<String, dynamic> toJson() {
        return {
          "name": this.name,
          "age": this.age
        };
      }
    }