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