Die Methode 'sendEmailVerification' ist für den Typ 'UserCredential' nicht definiert. Firebase flattern
Ich verfolge diesen Blog-Beitrag , um Benutzern nach der Anmeldung eine E-Mail-Bestätigung zu senden. Dies ist das Problem, das bei der Ausführung auftrittsendEmailVerification()
Die Methode 'sendEmailVerification' ist für den Typ 'UserCredential' nicht definiert. Versuchen Sie, den Namen auf den Namen einer vorhandenen Methode zu korrigieren oder eine Methode mit dem Namen 'sendEmailVerification' zu definieren
Aber das Problem mit dem Blog-Beitrag ist, dass einige Dinge, die verwendet wurden, veraltet sind und ich es geschafft habe, die meisten außer diesem zu lösen.
Hier ist mein Code: - (Sie können die Importanweisungen für den Namen der Pakete sehen)
import 'dart:async';
import 'package:firebase_auth/firebase_auth.dart' as auth;
import 'package:cloud_firestore/cloud_firestore.dart';
class Auth {
final auth.FirebaseAuth _firebaseAuth = auth.FirebaseAuth.instance;
Future<String> signUp(String email, String password) async {
try {
final user = await _firebaseAuth
.createUserWithEmailAndPassword(email: email, password: password);
try {
await user.sendEmailVerification(); // <== The error happens here
return user;
} catch (e) {
print('Code was not sent!');
}
} catch (e) {
print('An error occurred');
}
}
}
Können Sie mir helfen, das Problem zu lösen? Vielen Dank!
Antworten
Versuche Folgendes:
await user.user.sendEmailVerification();
Da createUserWithEmailAndPassword()gibt eine Instanz von zurück UserCredentialund da die Klasse UserCredentialeine Eigenschaft namens hat, userdie eine Instanz von zurückgibt User.
Daher können Sie die Eigenschaft verwenden user, um die Methode aufzurufen, sendEmailVerification()die sich in der Klasse befindet User.
createUserEmailAndPassword () gibt a zurück Future<UserCredential>, und für ein UserCredential- Objekt wurde keine Methode aufgerufen sendEmailVerification. Darüber beschwert sich die Fehlermeldung.
Wenn Sie über ein UserCredential verfügen, mit dem Sie arbeiten können, können Sie eine solche E-Mail-Bestätigung mit der folgenden Benutzereigenschaft anfordern :
try {
final credential = await _firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);
await credential.user.sendEmailVerification();
return credential.user;
} catch (e) {
print('Code was not sent!');
}
Eine Sache, die ich beachten sollte, war, dass ich dies nicht zum Laufen bringen konnte, bis ich versuchte, eine andere E-Mail-Adresse zu verwenden. Irgendwie wurde meine erste E-Mail-Adresse von Firebase gestört.