![](/img/trans.png)
[英]Logging in with Twitter doesn't add user to Firebase on Flutter
[英]Logging out of Flutter app doesn't go back to login page
我正在使用 firebase 對我的應用程序中的用戶進行身份驗證,並且登錄/注冊和注銷在我直接從登錄頁面后的主頁注銷時正常工作,但在我從路由的設置頁面注銷時不起作用主頁。
它在 firebase 上注銷,但頁面不會立即返回登錄頁面調用注銷,除非我按下應用欄上的后退按鈕。
這是我的注銷功能:
abstract class BaseAuth {
Future<void> signOut();
}
Future<void> signOut() async {
return _firebaseAuth.signOut();
}
final BaseAuth auth;
final VoidCallback onSignedOut;
_signOut() async {
try {
await widget.auth.signOut();
widget.onSignedOut();
} catch (e) {
print(e);
}
}
在我的根頁面中,我有:
@override
Widget build(BuildContext context) {
switch (authStatus) {
case AuthStatus.NOT_DETERMINED:
return _buildWaitingScreen();
break;
case AuthStatus.NOT_LOGGED_IN:
return new LoginSignUpPage(
auth: widget.auth,
onSignedIn: _onLoggedIn,
);
break;
case AuthStatus.LOGGED_IN:
if (_userId.length > 0 && _userId != null) {
return new HomePage(
userId: _userId,
auth: widget.auth,
onSignedOut: _onSignedOut,
);
} else return _buildWaitingScreen();
break;
default:
return _buildWaitingScreen();
}
}
因此,如果身份驗證狀態未登錄,則應返回 LoginSignUpPage。
我不確定為什么會發生這種延遲。 任何幫助,將不勝感激!
所以添加Navigator.popUntil(context, ModalRoute.withName("/"));
因為_signOut()
中的最后一行解決了這個問題。
它只是彈出堆棧中第一個屏幕頂部堆疊的所有屏幕。
這對我有用
Navigator.of(context, rootNavigator: true).pop(context);
嘗試使用 PushReplacement,即使我在遇到問題時使用它,但我沒有時間修復它,是的,它也可以用作問題的修復!
Navigator.of(context).pushReplacement or pushNamedReplacement(Screen to navigate);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.