【发布时间】:2018-06-17 07:59:15
【问题描述】:
我想使用以下类来存储帐户数据,以便应用的每个部分都可以访问它。
class AccountData {
static AccountData _instance = new AccountData._internal();
static GoogleSignInAccount _googleData;
factory AccountData() {
return _instance;
}
AccountData._internal();
static void setData(GoogleSignInAccount googleData)
{
_googleData = googleData;
}
GoogleSignInAccount get getData{
return _googleData;
}
String getUserID(){
return "5";
}
List<Workout> getWorkouts(){
return null;
}
Workout getWorkoutByDate(String workoutID, String date)
{
return null;
}
}
我在用户登录后使用以下代码设置了 google 帐户。
_googleSignIn.onCurrentUserChanged.listen((GoogleSignInAccount account) {
AccountData.setData(account);
print("Logged in, id: " + account.id);
runApp(new HomeState());
});
此时我可以访问帐户的所有字段并且一切正常。绕过登录屏幕的唯一方法是通过这部分代码。因此,总是会分配帐户数据。
@override
void initState() {
super.initState();
AccountData d = new AccountData();
print(d.getData);
}
如果我尝试访问 HomeState 中的帐户数据,则返回的 GoogleSignInAccount 为 null,这是不应该的。 我希望有人知道为什么会发生这种情况并知道如何解决问题。
【问题讨论】: