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)
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;
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
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.
Il a été changé ce que vous devez faire est AuthResult result = await _firebaseAuth.signInWithEmailAndPassword( email: email, password: password); FirebaseUser user = result.user;