一旦我的用户登录成功并且我有一个Firebase用户,我想通过分派一个进行异步调用以获取Profile的操作来检查服务器上是否已创建Profile。
如果未返回任何配置文件,我想将应用程序导航到“配置文件创建”页面,否则,请加载“配置文件”页面。
我正在考虑在登录中间件中分派第二个操作,但是在登录中间件中混用配置文件和登录代码似乎很奇怪。
是否有更好的方法或标准方法来做我想做的事情?
我什么都没尝试,但是我正在考虑在登录中间件中调度第二个操作,然后从那里导航到所需的页面。
ThunkAction<AppState> logIn = (Store<AppState> store) async {
store.dispatch(UserLoginAction());
try {
final GoogleSignIn _googleSignIn = new GoogleSignIn();
GoogleSignInAccount googleUser = await _googleSignIn.signIn();
GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final FirebaseAuth _auth = FirebaseAuth.instance;
final FirebaseUser _fb = await _auth.signInWithGoogle(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
User user = new User(id: _fb.uid, name: _fb.displayName, email: _fb.email, photoUrl: _fb.photoUrl);
store.dispatch(UserLoginSuccessAction(user: user));
store.dispatch(GetProfileAction());
Profile profile = await ProfileService.get().getProfile(_fb.uid);
store.dispatch(GetProfileSuccessAction(profile: profile));
if (profile) {
// Navigate to Profile Page
} else {
// Navigate to Profile Creation Page
}
} catch(error) {
store.dispatch(UserLoginFailAction(error: error));
}
};
编辑: 我只是想过一种似乎比我以前的建议更好的方法。
如果成功登录后我将其导航到“个人资料”页面,该怎么办。在“个人档案”页面的初始位置,我将调度该动作以获取“个人档案”。中间件和化简器完成后,根据Profile是否在AppState中初始化,“个人资料”页面的呈现方式会有所不同。
这看起来可以吗,或者有其他更好的方法吗?
答案 0 :(得分:0)
在ProfilePage的
GetProfileAction()
上投放onInit
。
由于以下原因,您建议的第二个解决方案更合适: