Open
Description
Bug report
Describe the bug
FirebaseAuth.instance.currentUser is always null when initializing firebase on windows, even if the user is logged in. It then changes to a non-null value within a few seconds.
Steps to reproduce
Steps to reproduce the behavior:
- Login with FirebaseAuth on flutter windows
- restart app and print FirebaseAuth.instance.currentUser immediately after initializing firebase
- See that the value is null initially, and then changes after about 20 seconds
Expected behavior
I expect the logged in user object to be shown on initialization, otherwise I have to add a delay (not sure how long it needs to be) or I don't know whether to show the login page or not. On mac and web, currentUser is immediately loaded on initialization.
Flutter doctor
Run flutter doctor
and paste the output below:
Click To Expand
PS C:\Users\justinmulli\blazesql_flutter> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.16.4, on Microsoft Windows [Version 10.0.17763.5122], locale en-US)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[X] Android toolchain - develop for Android devices
X Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).
If the Android SDK has been installed to a custom location, please use
`flutter config --android-sdk` to update to that location.
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.7.2)
[!] Android Studio (not installed)
[√] VS Code (version 1.85.1)
[√] Connected device (3 available)
[√] Network resources
! Doctor found issues in 2 categories.
PS C:\Users\justinmulli\blazesql_flutter>```
---
Activity
[-]🐛 [firebase_auth] FirebaseAuth.instance.currentUser initially null after initializing firebase on windows, even for logged in users[/-][+]🐛 [firebase_auth] FirebaseAuth.instance.currentUser initially null for the first few seconds initializing firebase on windows[/+]danagbemava-nc commentedon Dec 19, 2023
Hi @Justus-M, is this limited to only windows or do you experience it on other platforms as well?
Can you share the code sample you use as well?
Justus-M commentedon Dec 23, 2023
I haven't had time to create a minimum reproducible example but I imagine you can just use the example app and print FirebaseAuth.instance.currentUser immediately after initializing firebase.
I have added a delay of a few seconds and then it is no longer null, so to be honest this is no longer a priority for me. I believe it's an issue with the library so I wanted to bring it to your attention since flutterfire is still in the early stages for windows and has various issues.
But the code is literally just
print(FirebaseAuth.instance.currentUser)
This prints null on windows after initializing firebase, even if the user was logged in before closing the app.
On mac, web, and mobile it does not return null
google-oss-bot commentedon Jan 2, 2024
Hey @Justus-M. We need more information to resolve this issue but there hasn't been an update in 7 weekdays. I'm marking the issue as stale and if there are no new updates in the next 7 days I will close it automatically.
If you have more information that will help us get to the bottom of this, just add a comment!
Justus-M commentedon Jan 2, 2024
I provided more information
20 remaining items
remcova commentedon Aug 6, 2024
Yeah same here. I'm trying to find a solution at the moment. I'll post it here once I find it.
remcova commentedon Aug 8, 2024
@Justus-M do you use a YouTube scope by any chance for authentication?
Justus-M commentedon Aug 8, 2024
remcova commentedon Aug 8, 2024
Okay. I think I found a solution. It's the way you handle authentication. My current implementation that works now, looks like this:
await FirebaseAuth.instance.signInWithCredential(credential).whenComplete(() async { final user = FirebaseAuth.instance.currentUser; // do something with user });
Before I did it like this:
FirebaseAuth.instance.signInWithCredential(credential); FirebaseAuth.instance.authStateChanges().listen((User? user) async { // do something with the user object }
I hope this solves the issue for you too!
Justus-M commentedon Aug 8, 2024
BirjuVachhani commentedon Aug 10, 2024
This issue makes Firebase useless because Windows app is un-usable. Can someone please look into this? @Lyokone
venky9885 commentedon Aug 13, 2024
having same issue
remcova commentedon Aug 13, 2024
How do you handle the authentication then? I'm saying that I'm not experiencing this issue anymore.
ronpetit commentedon Sep 22, 2024
I'm having this error too, seems related to the channel error as it looks relevant to the auth-state
[ERROR:flutter/shell/common/shell.cc(1015)] The 'firebase_auth_plugin/auth-state/[DEFAULT]' channel sent a message from native to Flutter on a non-platform thread. Platform channel messages must be sent on the platform thread. Failure to do so may result in data loss or crashes, and must be fixed in the plugin or application code creating that channel.
See https://docs.flutter.dev/platform-integration/platform-channels#channels-and-platform-threading for more information.
flutter 3.24.3
firebase_core 3.4.1
firebase_auth 5.2.1
colonal commentedon Dec 7, 2024
I faced a similar issue where
FirebaseAuth.instance.currentUser
initially returnednull
for the first few seconds during Firebase initialization. Here's what I did to effectively handle this problem:Solution
I utilized the
FirebaseAuth.instance.authStateChanges()
stream to listen for authentication state changes and created aFirebaseAuthService
class to manage this behavior.FirebaseAuthService Class
Main File
Example: Checking Login Status in the Splash Screen
From any file, you can check if the user is logged in. For example, in the splash screen:
This approach ensures that your app correctly detects the user's authentication state as soon as it's available and navigates appropriately.
I hope this helps!
BirjuVachhani commentedon Dec 8, 2024
@Lyokone Any updates on this?
tortiolaware commentedon May 12, 2025
Any update on this? Are the team continuing developing flutter-firebase for windows?
BirjuVachhani commentedon May 12, 2025
Seems abandoned! 😢
KKimj commentedon May 28, 2025
It seems that
authStateChanges()
may emit null initially during Firebase initialization, possibly before the actual auth state is determined.Using
await authStateChanges().first
might help ensure the app waits for the correct auth state, potentially avoiding a premature null from currentUser during initial load.richard457 commentedon May 29, 2025
I am afraid Google will kill this soon.