web-dev-qa-db-fra.com

Je reçois une erreur "Le type d'erreur" AuthResult "n'est pas un sous-type de type" FirebaseUser "dans le type cast" lorsque j'essaie de me connecter ou de m'inscrire

Je crée une application flottante pour mon projet de collège, où j'ajoute une page de connexion et d'inscription et l'authentifie via Firebase, et lorsque je clique sur la connexion, la console de débogage indique "Le type d'erreur" AuthResult "n'est pas un sous-type de type "FirebaseUser" dans le type cast " et lorsque je recharge l'application après cette erreur, elle se connecte avec succès.

Tout fonctionnait mieux avant la mise à jour du package firebase_auth à 0.12.0 après cette mise à jour, les méthodes "signInWithEmailAndPassword ()" et "createUserWithEmailAndPassword ()" provoquant une erreur "Une valeur de le type "AuthResult" ne peut pas être affecté à une variable de type "FirebaseUser". Essayez de changer le type de la variable ou de transtyper le type de droite en "FirebaseUser" ", donc j'ai ajouté un transtypage comme FirebaseUser qui a corrigé l'erreur et l'application a été construite avec succès mais quand j'ai cliqué sur la connexion ou créer un compte, la console de débogage a dit Le type d'erreur 'AuthResult' n'est pas un sous-type de type 'FirebaseUser' dans le type cast

la connexion principale et créer le code de fonction du compte avant la mise à jour de firebase_auth 0.12.0

Future<String> signIn(String email, String password) async {
FirebaseUser user = await 
FirebaseAuth.instance.signInWithEmailAndPassword(
    email: email, password: password);
return user.uid;
}

Future<String> createUser(String email, String password) async {
FirebaseUser user = await 
FirebaseAuth.instance.createUserWithEmailAndPassword(
    email: email, password: password);
return user.uid;
}

le code ci-dessus fonctionnait bien, après la mise à jour (firebase_auth 0.12.0), le même code a commencé à générer cette erreur,

A value of type 'AuthResult' can't be assigned to a variable of type 
'FirebaseUser'.
Try changing the type of the variable, or casting the right-hand type to 
'FirebaseUser'.Dart(invalid_assignment)

J'ai corrigé l'erreur en lançant "FirebaseUser" comme indiqué ci-dessous

Future<String> signIn(String email, String password) async {
FirebaseUser user = await 
FirebaseAuth.instance.signInWithEmailAndPassword(
    email: email, password: password) as FirebaseUser;
return user.uid;
}

Future<String> createUser(String email, String password) async {
FirebaseUser user = await 
FirebaseAuth.instance.createUserWithEmailAndPassword(
    email: email, password: password) as FirebaseUser;
return user.uid;
}

ce nouveau code n'a pas généré d'erreur lors de la compilation, mais lorsque j'essaie de me connecter ou de créer un nouveau compte, il génère une erreur dans la console de débogage. Le type d'erreur "AuthResult" n'est pas un sous-type de type "FirebaseUser" dans le cast de type et le nouveau compte créé est créé avec succès sur firebase mais l'application ne passe pas à la page suivante mais dès que je recharge, elle commence avec la page qui devrait apparaître après la connexion et la création du compte (la déconnexion fonctionne parfaitement)

9
Hassan Ansari

Il s'agit d'un changement de rupture dans le plugin et son documenté ici https://pub.dev/packages/firebase_auth#012

Donc, vous ne devriez pas faire de casting, il vous suffit de refactoriser votre code pour adopter les nouvelles modifications:

FirebaseUser user = (await FirebaseAuth.instance.
signInWithEmailAndPassword(email: email, password: password))
.user;
16
Raouf Rahiche

Je fais face au même problème. Modifiez simplement pour être:

final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;

Voir https://github.com/flutter/flutter/issues/38757#issuecomment-522307525

13
Ahmed fathi

J'ai eu la même erreur et changé le code en:

FirebaseUser user = (await _firebaseAuth.signInWithEmailAndPassword(email: email, password: password)).user;

L'application fonctionne comme prévu sur un appareil réel, sans erreur dans la console, mais Visual Studio Code affiche un soulignement rouge à la fin de l'utilisateur et génère une erreur:

L'utilisateur "getter" n'est pas défini pour la classe "FirebaseUser". Essayez d'importer la bibliothèque qui définit "utilisateur", de corriger le nom par le nom d'un getter existant ou de définir un getter ou un champ nommé "user".

[Solution] Redémarrez VS Code. VS Code utilise l'ancienne bibliothèque jusqu'au redémarrage.

4
Flöru

Il a été changé ce que vous devez faire est AuthResult result = await _firebaseAuth.signInWithEmailAndPassword( email: email, password: password); FirebaseUser user = result.user;

0
mufakir