簡體   English   中英

如何保持用戶登錄 Flutter Firebase 應用程序?

[英]How to keep user signed in Flutter Firebase app?

我正在創建一個使用 Firebase 作為后端的聊天應用程序。 每當我重新啟動應用程序時,它都會進入歡迎屏幕,用戶必須每次登錄/注冊。 如果您登錄,然后在不注銷的情況下關閉應用程序,它仍會返回登錄屏幕。 我在 main 方法中添加了一個方法來檢查:

void getCurrentUser() async {
FirebaseAuth.instance.onAuthStateChanged.listen((firebaseUser) {
  print(firebaseUser);
  _user = firebaseUser;
});
}

因此,如果 _user 是 null,則 go 到歡迎頁面,否則 go 直接進入應用程序的聊天屏幕:

Widget build(BuildContext context) {
getCurrentUser();
return MaterialApp(
  initialRoute: _user == null ? '/' : '/chat',
  routes: {
    '/': (context) => WelcomeScreen(),
    '/login': (context) => LoginScreen(),
    '/registration': (context) => RegistrationScreen(),
    '/chat': (context) => ChatScreen(),
  },
);
}

為什么它不起作用? 我已經用谷歌搜索了這個問題一段時間,之前我使用的是 auth.currentUser(),這可能是問題所在,但現在我使用了一個監聽器,但它仍然不起作用。

var user await FirebaseAuth.instance.currentUser();
if (user != null) {
    Navigator.of(context).pushNamed("routeName");
}

將上面的代碼包裝在一個異步 function 中,它接受 BuildContext 並在 return 語句之前調用 build 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM