私は大学のプロジェクト用にフラッターアプリを作成しています。ここでは、ログインページとサインアップページを追加し、Firebaseを介してそれを認証しています。ログインをクリックすると、デバッグコンソールに"Error type 'AuthResult' is not aタイプcastのタイプ「FirebaseUser」のサブタイプ "そして、このエラーの後でアプリをリロードすると、正常にログインします。
この更新後にfirebase_authパッケージを0.12.0に更新する前は、すべてが最もよく機能していました。メソッド "signInWithEmailAndPassword()"および "createUserWithEmailAndPassword()"がエラーをスローしました"タイプ「AuthResult」をタイプ「FirebaseUser」の変数に割り当てることはできません。変数のタイプを変更するか、右側のタイプを「FirebaseUser」にキャストしてみてくださいなので、キャストを追加しましたFirebaseUserとしてこれはエラーを修正し、アプリは正常にビルドされましたが、ログインをクリックするか、アカウントを作成すると、デバッグコンソールはエラータイプ 'AuthResult'はタイプキャストのタイプ 'FirebaseUser'のサブタイプではありません
メインのログインと、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;
}
上記のコードは正常に機能していました。更新(firebase_auth 0.12.0)の後、同じコードがこのエラーをスローし始めました。
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)
次のように「FirebaseUser」をキャストしてエラーを修正しました
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;
}
この新しいコードはコンパイルでエラーをスローしませんでしたが、ログインまたは新しいアカウントを作成しようとすると、デバッグコンソールでエラーがスローされます。エラータイプ「AuthResult」は、タイプキャストおよびタイプ「新しいタイプのFirebaseUser」のサブタイプではありません。 firebaseで正常に作成されましたが、アプリは次のページに行きませんが、リロードするとすぐに、ログインとアカウントの作成後に表示されるページから始まります(ログアウトは完全に機能しています)
これはプラグインの重大な変更であり、ここに記載されています https://pub.dev/packages/firebase_auth#012
したがって、どのような種類のキャストも行わないでください。新しい変更を採用するには、コードをリファクタリングする必要があります。
FirebaseUser user = (await FirebaseAuth.instance.
signInWithEmailAndPassword(email: email, password: password))
.user;
私も同じ問題に直面しています。次のように変更するだけです:
final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
参照 https://github.com/flutter/flutter/issues/38757#issuecomment-522307525
私は同じエラーがあり、コードを次のように変更しました:
FirebaseUser user = (await _firebaseAuth.signInWithEmailAndPassword(email: email, password: password)).user;
アプリは実際のデバイスで期待どおりに動作しますが、コンソールにエラーは表示されませんが、Visual Studio Codeはユーザーの下の端に赤い下線を表示し、エラーを出力します。
ゲッター「user」がクラス「FirebaseUser」に定義されていません。 「user」を定義するライブラリをインポートするか、名前を既存のゲッターの名前に修正するか、「user」という名前のゲッターまたはフィールドを定義してください。
[ソリューション] VSコードを再起動します。 VS Codeは再起動するまで古いライブラリを使用します。
あなたがすべきことはAuthResult result = await _firebaseAuth.signInWithEmailAndPassword( email: email, password: password); FirebaseUser user = result.user;
に変更されました