はじめに
firebase_auth導入後にIOSのエミュレータでSignUpまたはloginを利用しようとしたときに以下のエラーが出ていました。
Firebaseのバージョン
- firebase_core: ^3.6.0
- firebase_auth: ^5.3.1
ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<Object?>' is not a subtype of type 'PigeonUserDetails?' in type cast
#0 PigeonUserCredential.decode (package:firebase_auth_platform_interface/src/pigeon/messages.pigeon.dart:432:23)
#1 _FirebaseAuthHostApiCodec.readValueOfType (package:firebase_auth_platform_interface/src/pigeon/messages.pigeon.dart:830:37)
#2 StandardMessageCodec.readValue (package:flutter/src/services/message_codecs.dart:477:12)
#3 StandardMessageCodec.readValueOfType (package:flutter/src/services/message_codecs.dart:522:23)
#4 _FirebaseAuthHostApiCodec.readValueOfType (package:firebase_auth_platform_interface/src/pigeon/messages.pigeon.dart:840:22)
#5 StandardMessageCodec.readValue (package:flutter/src/services/message_codecs.dart:477:12)
#6 StandardMessageCodec.decodeMessage (package:flutter/src/services/message_codecs.dart:341:28)
#7 BasicMessageChannel.send (package:flutter/src/services/platform_channel.dar<…>
解決方法
結論から言うと以下の方法で解決出来ました。
cd ios
pod update Firebase/Auth
pod install --repo-update
cd ..
flutter clean
flutter pub get
flutter run
この方法ではFirebaseとpod側とのバージョンの不一致が起きていたためエラーが出ていたらしいので、pod側で最新の互換性のあるバージョンを取得してエラーを解消しました。
次にpod install --repo-update でcocoaPodsのリポジトリを更新しました。
失敗例
Firebaseのバージョンを落とす
firebase_core: ^3.6.0
->firebase_core: ^2.32.0
firebase_auth: ^4.15.3
->firebase_core: ^2.32.0
エラー文を調べてみるとFirebaseのバージョン関係でエラーが出ているのが分かったのでこちらを実行してみると、、、
普通に同様のエラーが出ました。
Firebaseのバージョンを互換性のある最新バージョンにする
flutter pub upgrade firebase_auth
flutter clean
flutter pub get
これは逆に互換性のある最新バージョンにしてみました。
こちらも普通にエラーです。(そもそもの原因がIOSディレクトリのPodととのバージョン不一致だからPod側を最新にしないといけなかったですね)
podの再インストール
cd ios
pod update
pod install --repo-update
cd ..
flutter run
AIに聞いた時に 「多くのパッケージに新しいバージョンがありますが、現在の依存関係の制約と互換性がありません」 ということでしたので、podを入れ直しました。
うーん、エラー表記変わらず,,,,
終わりに
このエラーの解決方法がネットやサイトで見つけられなかったのでなかなか苦戦しました。
今回の解決方法はかなり時間がかかったので、Flutterのバージョン問題はなかなか骨が折れることを実感しました。