Puede darse el caso de que encuentres alguna incompatibilidad con tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al trabajo final.
Solución:
El inicio de sesión se realiza automáticamente y Firebase lo gestiona, aunque de forma asíncrona. Se pueden encontrar más detalles en la documentación oficial:
https://firebase.google.com/docs/auth/web/auth-state-persistence
El truco es muy simple. Tienes que esperar al primer cambio de estado.
static Future getFirebaseUser() async
await init();
//return await auth().currentUser;
return await auth().onAuthStateChanged.first;
Vuelve null
si no hay un usuario registrado: https://firebase.google.com/docs/reference/js/firebase.auth.Auth.html#onauthstatechanged
Mi firebase
versión:
firebase: 5.0.4 #https://pub.dartlang.org/packages/firebase
Escribí esta implementación que funciona tanto en dispositivos móviles como en la web:
static Future getFirebaseUser() async
FirebaseUser firebaseUser = await FirebaseAuth.instance.currentUser();
if (firebaseUser == null)
firebaseUser = await FirebaseAuth.instance.onAuthStateChanged.first;
return firebaseUser;
Reseñas y puntuaciones del post
Finalizando este artículo puedes encontrar las aclaraciones de otros gestores de proyectos, tú igualmente tienes la libertad de dejar el tuyo si dominas el tema.